# پایگاه‌های داده > SQL Server > مدیریت دیتابیس (Database Administration) > Maintenance Plan >  ثابت ماندن size دایتابیس بعد از حذف رکوردها

## ali190

سلام
دوستان عزیز من یه جدول دارم که یک فیلد داره از نوع image
من فایلهامو بصورت باینری تو دیتابیسم ذخیره میکنم
در اینجا دو تا سئوال برام پیش اومده:
1- اندازه نهایی فیلد image در الصاق فایلها چقدره؟(یعنی من حداکثر میتونم فایل با چه اندازه ای رو بهش الصاق کنم؟)
آیا فیلدی بیشتر از image وجود داره؟
2- چرا وقتی در جدولم یک سری از رکوردها با حجم زیاد رو حذف میکنم اندازه دیتابیسم ثایت میمونه و کم نمیشه؟
ممنون میشم اگر به سئوالاتم پاسخ بدید
ممنون ومتشکر
یاعلی

----------


## Reza_Yarahmadi

> اندازه نهایی فیلد image در الصاق فایلها چقدره؟(یعنی من حداکثر میتونم  فایل با چه اندازه ای رو بهش الصاق کنم؟)
> آیا فیلدی بیشتر از image وجود داره؟


حداکثر حجم فیلدهای باینری 2,147,483,647 بایت است. تا جایی که میدونم هنوز نوعی بالاتر از این حجم اضافه نشده (البته این حرف تا SQL Server 2008 صادق است). بدلیل اینکه نوع داده image قراره حذف بشه ، مایکروسافت توصیه کرده از نوع varbinary استفاده بشه.



> چرا وقتی در جدولم یک سری از رکوردها با حجم زیاد رو حذف میکنم اندازه  دیتابیسم ثایت میمونه و کم نمیشه؟


چیزی که میگم یک حدس بیشتر نیست!! بدلیل اینکه فیلدهای باینری (حجیم) بین رکوردها ذخیره نمیشه که با حذف ، توسط رکود دیگه ای جایگزین بشه ، حذف اونها باعث ایجاد نوعی Gap در فایل میشه. راه حلی که برای این مورد میشه در نظر گرفت Shirink کردن دیتابیس است.

----------


## ali190

> چیزی که میگم یک حدس بیشتر نیست!! بدلیل اینکه فیلدهای باینری (حجیم) بین رکوردها ذخیره نمیشه که با حذف ، توسط رکود دیگه ای جایگزین بشه ، حذف اونها باعث ایجاد نوعی Gap در فایل میشه. راه حلی که برای این مورد میشه در نظر گرفت Shirink کردن دیتابیس است.


سلام
ممنون از راهنماییتون
میشه یه مقدار بیشتر توضیح بدید (منظور از Shirink کردن دیتابیس )
یاعلی

----------


## Reza_Yarahmadi

قبل از هر چیزی بابت غلط املایی که داشتم معذرت میخوام. Shrink درست است نه Shirink  :گیج: 
بر اثر حذف و اضافه شدن رکوردها فضاهای خالی بین رکورد ها ایجاد میشه که باعث حجیم شدن دیتابیس میشه. با انجام Shrink روی دیتابیس (و یا هر یک از فایلهای دیتابیس) این حجم بی استفاده از بین رکوردها حذف میشه و رکوردها پشت سر هم قرار میگیرند. در صورتیکه روی جداول ایندکس گذاشتید توصیه میشه بعد از Shrink ، ایندکس ها رو Rebuild کنید.
برای انجام Shrink هم روی دیتابیس راست کلیک و از منوی Tasks گزینه Shrink (یا Database و یا Files) و انتخاب کنید تا پنجره مربوطه باز بشه.
و یا از دستور زیر برای این کار استفاده کنید
DBCC ShrinkDatabase ('DatabaseName' , درصد كوچك شدن)

----------

