سعید شیرزادیان
سعید شیرزادیان
خواندن ۲ دقیقه·۳ سال پیش

جابجایی فایلهای دیتابیس در اس کیو ال سرور

Move database file in new path in sql server

سلام دوستان
امیدوارم همیشه و در همه وقت، حال خوبی داشته باشید. برای جابجایی مسیر دیتابیس، همیشه برای خودم این معضل وجود داشت که چگونه این کار را انجام بدهم. چند راهی که همیشه به ذهن همه ما می رسد در ذیل بیان می کنم:

  1. دیتابیس را detach کنیم
مسیر detach کردن دیتابیس
مسیر detach کردن دیتابیس

بعد، فایلها را در مسیر جدید کپی نماییم و بعد آن را attach نماییم.

مسیر attach کردن دیتابیس
مسیر attach کردن دیتابیس

2. گرفتن backup از دیتابیس

مسیر گرفتن backup از دیتابیس
مسیر گرفتن backup از دیتابیس

و restore کردن دیتابیس در مسیر جدید

مسیر restore کردن دیتابیس
مسیر restore کردن دیتابیس


3. بی خیال دیتابیس بشیم و از اول دیتابیس را به طور مثال از طریق اسکریپت یا migration ایجاد کنیم.

4. ایجاد اسکرپیت مربوط به تغییر مسیر file های دیتابیس با دستور modify file که اسکرپیت مربوط به ایجاد اتوماتیک آن در زیر می باشد

DECLARE @DBName VARCHAR(100) = 'TestDB';

DECLARE @NewPath VARCHAR(100) = 'D:\Databases\';

SELECT 'ALTER DATABASE ' + @DBName + ' MODIFY FILE (NAME = [' + f.name + '],' +

' FILENAME = ''' + @NewPath + ''

+ f.name + CASE WHEN f.type = 1 THEN '.ldf' ELSE '.mdf' END + ''');' AS ExecScript

, f.name

, f.type_desc

, f.physical_name

, f.state_desc

FROM sys.master_files f

WHERE f.database_id = DB_ID(@DBName);

اجرای اسکریپت جابجایی دیتابیس testDb
اجرای اسکریپت جابجایی دیتابیس testDb


لازم به ذکراست در اینجا نام دیتابیس تستی ما TestDb و مسیر جدید آن D:\Databases می باشد که از دو متغیر استفاده شده است

5. عملیات مربوط به offline کردن دیتابیس

عملیات offline کردن دیتابیس
عملیات offline کردن دیتابیس

می توانیم از اسکرپیت زیر نیز استفاده نماییم

USE [master]

ALTER DATABASE [TestDB] SET OFFLINE


6. کپی نمودن فایلها در مسیر جدید

در این مرحله می بایست data file و log file های مربوط به دیتابیس را در مسیر جدید کپی نماییم. در اینجا مسیر جدید ما D:\Databases می باشد.

7. عملیات مربوط به online نمودن دیتابیس

عملیات مربوط به online نمودن دیتابیس
عملیات مربوط به online نمودن دیتابیس

که می توانیم از اسکریپت زیر نیز استفاده نماییم

ALTER DATABASE [TestDB] SET ONLINE

8. حذف فایلهای قبلی

بعد از تست نمودن دیتابیس، فایلهای قبلی را حذف می نماییم.


با تشکر

سعید شیرزادیان

1400/11/13

sql servermodify file databasemove database file
من سعید شیرزادیان ، چند سالی هست برنامه نویسی می کنم و علاقه زیادی به دیتابیس اس کیو ال دارم. کنارش برنامه نویسی با c# هم خیلی دوست دارم
شاید از این پست‌ها خوشتان بیاید