راهنمای جامع و چک لیست گام به گام انتقال دیتابیسهای سیستمی SQLServer
انتقال دیتابیسهای سیستمی SQLServer میتواند کاری چالشبرانگیز باشد، اما با یک برنامه شفاف و درک صحیح از فرآیند، میتوان آن را بهآرامی و ایمن انجام داد. این چک لیست با هدف ارائه یک راهنمای جامع برای مدیران دیتابیس (DBA ها) طراحی شده است تا دیتابیسهای master، model، msdb و tempdb را بدون مشکل جابجا کنند. برنامهریزی و اجرای دقیق، کلید حفظ یکپارچگی دادهها و دسترسپذیری سیستم است.
پیش از تلاش برای انتقال هر یک از دیتابیسهای سیستمی SQL Server، اطمینان حاصل کنید که یک پشتیبانگیری کامل از تمام دیتابیسهای سیستمی و کاربری دارید. پیامدهای انتقال هر دیتابیس را درک کنید، زیرا هر یک وظایف حیاتی مختلفی را انجام میدهند. همیشه این عملیات را در طول یک پنجره نگهداری (maintenance window) انجام دهید.
دیتابیس master شامل تمام اطلاعات سطح سیستم از جمله لاگینها، endpoints، سرورهای لینکشده و تنظیمات پیکربندی است. انتقال آن نیازمند مراحل خاص و راهاندازی مجدد سرور است.
۱. یک پشتیبانگیری کامل از دیتابیس master بگیرید.
۲. سرویس SQL Server را متوقف کنید.
۳. فایلهای فیزیکی دیتابیس master (master.mdf و mastlog.ldf) را به مکان جدید منتقل کنید.
۴. پارامترهای راهاندازی (startup parameters) مربوط به نمونه SQL Server را بهروزرسانی کنید تا به مکان جدید اشاره کنند. این کار از طریق SQL Server Configuration Manager انجام میشود:
الف. SQL Server Configuration Manager را باز کنید.
ب. روی SQL Server (MSSQLSERVER) کلیک راست کرده و Properties را انتخاب کنید.
ج. به تب Startup Parameters بروید.
د. پارامترهای -d و -l را برای نشان دادن مسیرهای جدید به ترتیب برای master.mdf و mastlog.ldf تغییر دهید. به عنوان مثال:
-dC:\NewPath\master.mdf
-lC:\NewPath\mastlog.ldf
۵. سرویس SQL Server را راهاندازی کنید.
۶. مسیرهای جدید را با استفاده از sys.master_files تأیید کنید:
SELECT name, physical_name AS CurrentLocation, state_desc
FROM sys.master_files
WHERE database_id = DB_ID('master');
دیتابیس model به عنوان یک الگو برای تمام دیتابیسهای جدیدی که روی نمونه SQL Server ایجاد میشوند، استفاده میشود. انتقال آن شبیه به دیتابیسهای کاربری است اما نیازمند آفلاین کردن دیتابیس است.
۱. یک پشتیبانگیری کامل از دیتابیس model بگیرید.
۲. دیتابیس model را آفلاین کنید:
ALTER DATABASE model SET OFFLINE WITH ROLLBACK IMMEDIATE;
۳. فایلهای فیزیکی دیتابیس model (model.mdf و modellog.ldf) را به مکان جدید منتقل کنید.
۴. مسیرهای فایل را در SQL Server بهروزرسانی کنید:
ALTER DATABASE model
MODIFY FILE (NAME = modeldev, FILENAME = 'C:\NewPath\model.mdf');
GO
ALTER DATABASE model
MODIFY FILE (NAME = modellog, FILENAME = 'C:\NewPath\modellog.ldf');
GO
۵. دیتابیس model را آنلاین کنید:
ALTER DATABASE model SET ONLINE;
۶. مسیرهای جدید را تأیید کنید:
SELECT name, physical_name AS CurrentLocation, state_desc
FROM sys.master_files
WHERE database_id = DB_ID('model');
دیتابیس MSDB توسط SQL Server Agent برای زمانبندی هشدارها و کارهای (jobs) مختلف و همچنین توسط سایر ویژگیهای SQL Server مانند Database Mail، Service Broker و غیره استفاده میشود. مشابه دیتابیس model، میتوان آن را در حالی که نمونه SQL Server آنلاین است، جابجا کرد.
۱. یک پشتیبانگیری کامل از دیتابیس msdb بگیرید.
۲. دیتابیس msdb را آفلاین کنید:
ALTER DATABASE msdb SET OFFLINE WITH ROLLBACK IMMEDIATE;
۳. فایلهای فیزیکی دیتابیس msdb (MSDBData.mdf و MSDBLog.ldf) را به مکان جدید منتقل کنید. (نامهای فایل ممکن است بسته به نسخه SQL Server متفاوت باشند).
۴. مسیرهای فایل را در SQL Server بهروزرسانی کنید:
ALTER DATABASE msdb
MODIFY FILE (NAME = MSDBData, FILENAME = 'C:\NewPath\MSDBData.mdf');
GO
ALTER DATABASE msdb
MODIFY FILE (NAME = MSDBLog, FILENAME = 'C:\NewPath\MSDBLog.ldf');
GO
۵. دیتابیس msdb را آنلاین کنید:
ALTER DATABASE msdb SET ONLINE;
۶. مسیرهای جدید را تأیید کنید:
SELECT name, physical_name AS CurrentLocation, state_desc
FROM sys.master_files
WHERE database_id = DB_ID('msdb');
دیتابیس tempdb یک فضای کاری موقت برای SQL Server است. هر بار که SQL Server راهاندازی میشود، مجدداً ایجاد میگردد، بنابراین انتقال آن با سایر دیتابیسهای سیستمی متفاوت است. شما فایلهای آن را مستقیماً جابجا نمیکنید؛ بلکه به SQL Server میگویید که آنها را در کجا ایجاد کند.
۱. یک پشتیبانگیری کامل از دیتابیس master بگیرید (زیرا تغییرات tempdb در آنجا ثبت میشوند).
۲. از دستور ALTER DATABASE برای تعیین مکان جدید فایلهای tempdb استفاده کنید. اگر بیش از یک فایل tempdb (داده و لاگ) دارید، باید تمام آنها را مشخص کنید:
ALTER DATABASE tempdb
MODIFY FILE (NAME = tempdev, FILENAME = 'C:\NewPath\tempdb.mdf');
GO
ALTER DATABASE tempdb
MODIFY FILE (NAME = templog, FILENAME = 'C:\NewPath\templog.ldf');
GO
۳. نمونه SQL Server را راهاندازی مجدد کنید. این کار فایلهای tempdb قدیمی را حذف کرده و فایلهای جدید را در مکان مشخص شده ایجاد خواهد کرد.
۴. مسیرهای جدید را تأیید کنید:
SELECT name, physical_name AS CurrentLocation, state_desc
FROM sys.master_files
WHERE database_id = DB_ID('tempdb');
انتقال دیتابیسهای سیستمی SQL Server یک وظیفه مدیریتی حیاتی است که در صورت اجرای صحیح، مدیریت و سازماندهی سرور را بهبود میبخشد. همیشه یک چک لیست جامع را دنبال کنید، از وجود پشتیبانگیریها اطمینان حاصل کنید و عملیات را در طول نگهداری برنامهریزیشده انجام دهید تا خطرات به حداقل برسد. این راهنما یک چارچوب قوی برای جابجایی موفقیتآمیز دیتابیسهای سیستمی فراهم میکند.