View Full Version : حرفه ای: گرفتن بخشي از يك فيلد varbinary
Reza_Yarahmadi
سه شنبه 02 شهریور 1389, 11:52 صبح
سلام به همه دوستان
توي يك برنامه نياز دارم بخشي از يك فيلد varbinary رو بخونم. نكته اينجاست كه نبايد ابتدا كل فيلد رو بخونم و بعد بخش مورد نظر رو جدا كنم.(حتي توي SQL Server)
يكي از دوستان گفتن بايد كاري كني كه SQL Server فقط بخش مورد نظر رو از روي هارد بخونه.
حالا مشكل اينجاست كه من چطور ميتونم SQL Server رو وادار كنم كه فقط بايت هاي مورد نظر خودم رو بخونه نه بيشتر؟؟
دوستان در اين مورد و يا اگه روش ديگه اي سراغ داريد ممنون ميشم كمكم كنيد
m_omrani
سه شنبه 02 شهریور 1389, 14:56 عصر
نمي دونم ها. شايد اين راه شدني باشه. در جدول مورد نظر دو تا ستون تعريف کنيد براي ايندکس بايت شروع و خاتمه محل مورد نظر. بعد يک فيلد محاسباتي تعريف کنيد که SQL Server از بايت شروع و خاتمه مشخص شده، ديتا رو جدا کنه و در فيلد محاسباتي بريزه. بعد به جاي فيلد اصلي VARBINARY از فيلد محاسباتي مورد نظر استفاده کنيد.
Reza_Yarahmadi
سه شنبه 02 شهریور 1389, 15:15 عصر
SQL Server از بايت شروع و خاتمه مشخص شده، ديتا رو جدا کنه
مشكل اصلي همين جاست كه چطور جداش كنيم؟
ببينيد سرور ما به بيش از 10000 كاربر خدمات ميده ، بعضي مواقع فايلهايي روي سرور قرار داده ميشه تا برنامه هاي كلاينت اون فايلها رو دريافت كنند ، چون بعضي مواقع حجم فايلها زياد ميشه و يا سرعت اينترنت كاربران كمه و نميتونن همه فايل رو يكجا دريافت كنند ميخوايم تكه تكه فايل رو ارسال كنيم. اگر سرور بخواد هر بار كل فيلد رو بخونه و بعد بخشي ازش رو بفرسته فشار زيادي به سرور مياد.
دنبال راهي هستيم كه SQL Server فقط اندازه خاصي از فيلد مورد نظر رو بخونه. حالا چطور اين كار انجام بشه ....!!
Reza_Yarahmadi
چهارشنبه 03 شهریور 1389, 10:13 صبح
مشكل تقريبا حل شد.
براي كاري كه ميخواستيم از دستور Substring به صورت زير استفاده كرديم.
Select Substring(FieldName, @Offset, @Len) From TableName
قبلا فكر ميكرديم اين دستور اول كل فيلد رو ميخونه بعد بخش مورد نظر رو جدا ميكنه ولي بعد از جستجوهاي بسيار!! به اين نتيجه رسيديم كه فقط همون بخشي كه ما ميخوايم رو ميخونه.
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.