۱۳۸۸/۰۴/۲۱

تهيه بك آپ‌هاي خودكار از SQL Server Express


SQL Server express edition نگارش مجاني و ساده شده‌ي اس كيوال سرور است. اين نگارش مجاني فاقد SQL Server agent براي زمان بندي انجام امور تكراري، براي مثال تهيه بك آپ‌هاي خودكار است. اين مورد در كل ايرادي محسوب نمي‌شود زيرا مي‌توان اين عمليات را با استفاده از سيستم استاندارد scheduled tasks ويندوز نيز پياده سازي كرد.
برنامه خط فرمان سورس بازي به نام ExpressMaint موجود است كه مي‌تواند از ديتابيس‌هاي اس كيوال سرور اكسپرس (و غير اكسپرس) بك آپ تهيه كند. فقط كافي است اين برنامه را به عنوان يك scheduled task ويندوز معرفي كنيم تا در زمان‌هاي تعيين شده در مكان‌هايي مشخص، بك آپ تهيه كند. همچنين اين برنامه فايل‌هاي بك آپ تهيه شده را نيز تعيين اعتبار مي‌كند.
با پارامترهاي خط فرمان آن در اين‌جا مي‌توانيد آشنا شويد. خلاصه كاربردي آن را به صورت چند دستور در ادامه مرور خواهيم كرد.

الف) يك فايل bat را با محتواي زير درست كنيد :

C:\backup\expressmaint.exe -S (local)\sqlexpress -D ALL_USER -T DB -R C:\backup -RU WEEKS -RV 2 -B C:\backup -BU DAYS -BV 2 -V -C
توضيحات: در اين فايل bat ، مسير فايل اجرايي برنامه حتما بايد دقيقا ذكر شود و گرنه scheduled task ويندوز درست كار نخواهد كرد. همچنين instance اس كيوال سرور اكسپرس در اينجا (local)\sqlexpress فرض شده است. اين دستور از تمامي ديتابيس‌هاي غيرسيستمي در مسير C:\backup بك آپ مي‌گيرد (به ازاي هر ديتابيس يك پوشه مجزا درست خواهد كرد و هر فايل را بر اساس تاريخ و ساعت مشخص مي‌سازد). همچنين لاگ عمليات را نيز در همان پوشه تهيه مي‌كند (نتيجه اعتبار سنجي صورت گرفته بر روي بك آپ‌هاي تهيه شده در اين فايل‌ها ثبت مي‌شود). مطابق پارامترهاي بكار گرفته شده، بك آپ‌هاي قديمي‌تر از دو روز به صورت خودكار حذف شده و لاگ فايل‌ها به مدت 2 هفته نگهداري مي‌شوند.

ب) براي اجراي زمان بندي شده‌ي اين فايل bat تهيه شده، دستورات زير را در خط فرمان اجرا كنيد (فرض بر اين است كه فايل bat تهيه شده در مسير مشخص شده C:\backup\backup.bat قرار دارد) :

AT 23:30 /EVERY:m,t,w,th,f,s,su C:\backup\backup.bat
AT 11:30 /EVERY:m,t,w,th,f,s,su C:\backup\backup.bat
به اين صورت ويندوز هر روز، دوبار در طول روز از كليه ديتابيس‌ها به صورت خودكار بك آپ تهيه مي‌كند.

روشي كه در اين‌جا ذكر شد منحصر به نگارش express نيست و با كليه نگارش‌هاي SQL Server سازگار است.