PDA

View Full Version : مشكل با ذخيره فايل ها در File Strem



sajjad_kochekian
چهارشنبه 15 تیر 1390, 23:49 عصر
سلام
من يك ديتابيس داشتم كه كلي اطلاعات داخلش بود و من اومدم يك فايل استريم به آن اضافه كردم.
بعد از يك مدت متوجه شدم كه فايل هايي را كه آپديت مي كنم فايل قبلي را پاك نمي كند و يك فايل جديد در هر آپديت مي سازد.

يك ديتابيس جديد ساختم و اسكريپت اون جدول File stream را در اون اجرا كردم و مشكل قبلي ديگه وجود نداشت. همه تنظيمات هر دو ديتابيس را بررسي كردم ولي مشكل را متوجه نشدم.

چطور مي توانم مشكلم را حل كنم.

AminSobati
پنج شنبه 16 تیر 1390, 23:30 عصر
سلام دوست عزیزم،
حذف یک محتوی از fileStream بلافاصه فایل مربوطه رو پاک نمیکنه. یک Process شبیه به Garbage Collector هر چند دقیقه فعال میشه و فایلهایی که به هیچ رکوردی مربوط نیستند حذف میکنه. برای اینکه Process مذکور دستی فعال بشه میتونین دستور CHECKPOINT رو اجرا کنین. البته فقط جهت کنجکاوی شما این دستور رو گفتم در غیر اینصورت نیازی به اجرای اون نیست و خود SQL Server در موعد مقرر کارش رو انجام میده

sajjad_kochekian
جمعه 17 تیر 1390, 11:16 صبح
توي ديتابيس دوم كه ساختم همين حالت رخ ميده يعني بعد از چند لحظه فايل پاك ميشه ولي داخل ديتابيس اصلي حتي بعد يك روز هم اين اتفاق نمي افتد.

آيا نبايد گزينه اي جايي فعال كرد

AminSobati
شنبه 18 تیر 1390, 23:31 عصر
Checkpoint بزنین بازهم پاک نمیشه؟

sajjad_kochekian
یک شنبه 19 تیر 1390, 10:35 صبح
Checkpoint بزنین بازهم پاک نمیشه؟

نه پاك نشد.
درچه صورتي بايد كلاً پاك شود.
وقتي كه من اون سطر را كاملا پاك ميكنم.
يا وقتي فيلد مربوط به اون فايل را Null مي كنم.

AminSobati
یک شنبه 19 تیر 1390, 23:35 عصر
زمانی که سطر رو پاک میکنید. ضمنا به یک موضوع شک کردم، Recovery Model دیتابیس چه گزینه ای هست؟

sajjad_kochekian
چهارشنبه 22 تیر 1390, 11:52 صبح
زمانی که سطر رو پاک میکنید. ضمنا به یک موضوع شک کردم، Recovery Model دیتابیس چه گزینه ای هست؟

هر دو ديتابيس full هست

در ضمن يك مشكل ديگه هم دارم
داخل پوشه فايل استريم كه مي روم فايل ها قابل حذف هست چطور مي تونم از اين كار جلوگيري كنم.

AminSobati
پنج شنبه 23 تیر 1390, 23:48 عصر
بصورت آزمایشی روی Simple قرار بدین و ببینین آیا بعد از Checkpoint فایل پاک میشه یا خیر.
در مورد Folder، باید سطوح دسترسی رو در ویندوز مدیریت کنید، این به SQL Server مربوط نمیشه

sajjad_kochekian
شنبه 25 تیر 1390, 12:10 عصر
باز هم نشد.
Recovery Model را گذاشتم روي SIMPLE و چك پوينت را هم زدم ولي فايد ه نداشت.
Recovery Model را به حالت اول برگرداندم و دوباره امتحان كردم باز هم فايده نداشت.
از دستور dbcc checkdb هم استفاده كردم ولي فايده نداشت.
اين مشكل قابل حل شدن هست؟

AminSobati
دوشنبه 27 تیر 1390, 00:31 صبح
دوست عزیز مطمئن هستین که رکوردهای جدول حتما با فایلها در ارتباط هستند؟ چطوره یک جدول جدید بسازین و اطلاعات جدول قبلی رو به جدول جدید Insert کنین. حالا حذف از جدول جدید رو بررسی کنید

sajjad_kochekian
سه شنبه 28 تیر 1390, 20:11 عصر
يك بار امتحان كردم.
كل فايل هاي فايل استريم را حذف و جديد شروع به ذخيره كردن فايل ها پرداختم ولي دوباره وقتي كه يك از سطر ها را آپديت مي كردم فايل جديد ساخته مي شد و فايل ديگه حذف نمي شد.
جدول را هم دوباره ساختم ولي فايده نداشت.

يك مشكل ديگر .
من فايل هاي بزرگتر از 100 مگابايت را نمي توانم از داخل برنامه ام در ديتابيس ذخيره كنم. فيلد استريم كه گرفته ام فايل را دريافت مي كنه ولي وقتي مي خواهم بريزم داخل record set جهت آپديت ركورد ست Over flow مي كنه.
بايد به چه روشي فايل هاي بزرگ را داخل جدول ذخيره كنم.