یک برنامه نگهداری کامل برای SQL Server 2008
بهینه سازی پایگاه داده
این بخش به بهینه نگه داشتن پایگاه داده اختصاص یافته است. در این مثال ، ما می خواهیم کدها را برای انجام موارد زیر تنظیم کنیم (نمودار خلاصه ای از نحوه اتصال سرورها را ببینید).
- پایگاه داده پشتیبان گیری از سرور زنده به یک پوشه پشتیبان مشترک
- پایگاه داده مجدد فهرست
- تمام اتصالات را از بین ببرید و پایگاه داده را بر روی سرور گزارشگر بازیابی کنید.
- سرورهای پیوندی به زودی در مقاله ای جداگانه قرار می گیرند
- حمل و نقل ورود به زودی در یک مقاله جداگانه قرار می گیرد
هنگام انجام آن از طریق سرور ، باید به حسابی که SQL Server از دسترسی به سیستم فایل سرورهای هدف اجرا می کند ، اجازه دهید.
همه کد SQL از یک پایگاه داده برنامه های کاربردی اجرا می شود و طرحواره روی "maint" تنظیم می شود
مقالات دیگری وجود دارد که در زیر نوشتیم و ممکن است مورد توجه شما قرار بگیرند.
طرح کامل نگهداری
اکنون می توانیم همه این بخشهای کد جداگانه را با روال دیگری که آنها را به ترتیب صحیح فراخوانی می کند ، مدیریت کنیم ، این امر در سرور مستقیم قرار می گیرد. کد به شرح زیر است:
- زمان را کار کنید
- اگر شب است دوباره پایگاه داده را فهرست کنید
- پشتیبان گیری از پایگاه داده را اجرا کنید (هرجایی که نیاز دارید اضافه کنید)
- اگر شب است از پایگاه های دیگر پشتیبان تهیه کنید (هرجایی که نیاز دارید اضافه کنید)
- ارتباطات را از بین ببرید و پایگاه داده را بازیابی کنید (جایی که نیاز دارید اضافه کنید)
این کد چندین ماه بدون هیچ مشکلی آزمایش و آزمایش شده است.
لطفا توجه داشته باشید که کاهش پرونده های ورود به سیستم و پرونده های پایگاه داده باید به حداقل ممکن برسد ، با اجرای یک نسخه پشتیبان ، شما گزارش را تخلیه می کنید (اگرچه فضای مورد استفاده را حفظ می کند). در صورت نیاز در مواقعی که باید خارج از ساعات کاری معمول اجرا شود.
SQL Code
Use [utilities]GOCREATE PROC [maint].MaintenancePlan AS BEGINDECLARE @BackupType VARCHAR(1)='E'IF DATEPART(HOUR,GETDATE()) BETWEEN 5 AND 21 BEGINSET @BackupType='D'END--EXEC ('USE TempDb; DBCC SHRINKFILE(templog, 0)');--This is only needed when space is at a premium!--Re-index LiveIF @BackupType='E' EXEC [maint].DatabaseReIndex 'dbname'--Create BackupBACKUP DATABASE TO DISK=N'{backuplocation}{dbname}.bak'WITH NOFORMAT, INIT, NAME =N'{dbname}', SKIP, NOREWIND, NOUNLOAD, STATS= 10;--EXEC ('USE ; DBCC SHRINKFILE(_log, 0)');--This is only needed when space is at a premium!--Backup Other Files at NightIF @BackupType='E' BEGIN EXEC [maint].DatabaseReIndex 'dbname' --Backup Others BACKUP DATABASE [databasename] TO DISK=N'{backuplocation}{dbname2}.bak' WITH FORMAT,INIT, NAME =N'{dbname2}',SKIP, NOREWIND, NOUNLOAD, STATS= 10END--Restore Backups on other serverEXEC [server].[utilities].[maint].KillConnections 'dbname';EXEC [server].[utilities].[maint].RestoreDatabase_{dbname};--Restore Backups on other server for db_2 etcIF @BackupType='E' BEGIN EXEC [server].[utilities].[maint].KillConnections 'dbname2'; EXEC [server].[utilities].[maint].RestoreDatabase_{dbname2};ENDENDGO
بانک اطلاعات پشتیبان
برای دریافت کد برای تهیه نسخه پشتیبان از پایگاه داده خود ، آسان ترین اسکریپت کد از SSMS است.
روندی را که معمولاً استفاده می کنید دنبال کنید و سپس "Script Action to New Query Window" را انتخاب کنید.
این کد را در برنامه نگهداری کپی کنید.
پایگاه داده مجدد فهرست
در مرحله بعدی ما می توانیم چند کد برای اضافه کردن مجدد پایگاه داده خود اضافه کنیم ، این دوباره یک روش ذخیره شده اشتراک است که در آن فقط باید نام سیستم را به آن بگویید.
برای جلوگیری از تکثیر کد ، می توانید اطلاعات مربوط به آن را در پیوند زیر بخوانید.
اتصالات را بکش
هنگام انجام بازیابی در پایگاه داده ، فقط می توانید یک اتصال به آن داشته باشید (فرآیند انجام بازیابی) ، بنابراین می توانیم یک روش ذخیره شده ایجاد کنیم تا تمام اتصالات جدا از روند فعلی بسته شود. ما دوباره مقاله جداگانه ای برای این کار ایجاد کرده ایم.
بازیابی پایگاه داده
این کد را می توان از SQL Server Management Studio نیز نوشت. اگر این کد را به روشی ذخیره شده اضافه کنید ، می توانید به راحتی از طریق پردازش های دیگر و حتی سرورهای دیگر با آن تماس بگیرید. ما برای پوشش گزینه های بیشتر این مقاله را به مقاله ای جداگانه منتقل کرده ایم.