خانه/ وبلاگ/ افزایش حجم Data File و Log File
مدیریت فایل‌ها

نحوه افزایش حجم Data File و Log File در SQL Server

مدیریت پایگاه‌داده ۳۱ مرداد ۱۴۰۴ ۹ دقیقه مطالعه

هر پایگاه‌داده در SQL Server حداقل از دو نوع فایل تشکیل شده: یک Data File (پسوند .mdf) که خودِ داده‌ها و ساختارها را نگه می‌دارد، و یک Log File (پسوند .ldf) که تراکنش‌ها را برای بازیابی و یکپارچگی ثبت می‌کند. اگر فضای این فایل‌ها تمام شود، عملیات نوشتن با خطا متوقف می‌شود — گاهی حتی پایگاه‌داده به حالت Recovery Pending می‌رود.

روش ۱ — افزایش حجم از طریق SSMS (تصویری)

در Object Explorer روی پایگاه‌داده‌ی موردنظر راست‌کلیک کن → Properties → Files:

Database Properties — ShopDB — Files
Logical NameTypeSize (MB)Autogrowth
ShopDBRows 2048 By 64 MB, Unlimited
ShopDB_logLog 512 By 10%, Unlimited

روی مقدار Size (MB) فایل موردنظر کلیک کن، عدد جدید و بزرگ‌تر را وارد کن، و OK را بزن. برای تغییر رفتار رشد خودکار، روی دکمه‌ی کنار Autogrowth کلیک کن.

روش ۲ — افزایش حجم با T-SQL

sql
-- افزایش دستی حجم فایل Data به 4 گیگابایت
ALTER DATABASE ShopDB
MODIFY FILE (NAME = ShopDB, SIZE = 4096MB);

-- افزایش دستی حجم فایل Log به 1 گیگابایت
ALTER DATABASE ShopDB
MODIFY FILE (NAME = ShopDB_log, SIZE = 1024MB);

نام دقیق فایل‌های منطقی (Logical Name) را می‌توانی با کوئری SELECT name, size FROM sys.master_files WHERE database_id = DB_ID('ShopDB'); پیدا کنی.

تنظیم درست Auto Growth

به‌طور پیش‌فرض، Auto Growth روی درصد (مثلاً ۱۰٪) تنظیم می‌شود که در فایل‌های بزرگ باعث رشدهای ناگهانی و کند می‌شود. توصیه‌ی رایج این است که رشد را روی یک مقدار ثابت مگابایتی (مثلاً ۲۵۶ یا ۵۱۲ مگابایت) تنظیم کنی، نه درصد:

sql
ALTER DATABASE ShopDB
MODIFY FILE (NAME = ShopDB, FILEGROWTH = 256MB);

ALTER DATABASE ShopDB
MODIFY FILE (NAME = ShopDB_log, FILEGROWTH = 256MB);
Auto Growth باید فقط به‌عنوان یک شبکه‌ی ایمنی در نظر گرفته شود، نه استراتژی اصلی مدیریت فضا. بهتر است فایل‌ها را از ابتدا با حجم مناسب (بر اساس تخمین رشد داده) بسازی تا Auto Growth کمتر فعال شود — هر بار رشد فایل باعث یک وقفه‌ی کوتاه در عملکرد می‌شود.

روش ۳ — افزودن یک فایل جدید (وقتی دیسک فعلی جا ندارد)

اگر دیسک فعلی پر شده و نمی‌توانی فایل موجود را بزرگ‌تر کنی، می‌توانی یک فایل Data جدید در یک درایو دیگر اضافه کنی:

sql
ALTER DATABASE ShopDB
ADD FILE (
  NAME = ShopDB_data2,
  FILENAME = N'D:\SQLData\ShopDB_data2.ndf',
  SIZE = 2048MB,
  FILEGROWTH = 256MB
) TO FILEGROUP [PRIMARY];

چک‌لیست سریع

وضعیتراه‌حل پیشنهادی
دیسک فعلی هنوز فضای خالی داردافزایش دستی Size یا افزایش FILEGROWTH
دیسک فعلی پر شدهافزودن فایل جدید در درایو دیگر با ADD FILE
فایل مدام با Auto Growth رشد می‌کندحجم اولیه را بزرگ‌تر تعریف کن، رشد را ثابت (نه درصدی) کن

جمع‌بندی

افزایش حجم فایل‌های Data و Log کار ساده‌ای است، چه از SSMS و چه با T-SQL. نکته‌ی مهم‌تر، تنظیم درست Auto Growth و برنامه‌ریزی فضا از ابتدا است تا از رشدهای ناگهانی و مکرر که عملکرد را کند می‌کنند جلوگیری شود. اگر فایل Log بیش از حد انتظار رشد می‌کند، حتماً راهنمای چرا حجم Transaction Log زیاد می‌شود و چگونه آن را مدیریت کنیم؟ را هم بخوان.

می‌خوای مفاهیم پایگاه‌داده را کامل یاد بگیری؟

دوره‌ی رایگان SQLFarsi را همین حالا شروع کن.

شروع یادگیری