MS SQL 數據庫遷移文件,這里說的不是將數據庫遷移到另外一台服務器,只是在服務器不同磁盤目錄內做遷移。移動數據庫文件的情況大致有下面一些:
1: 事先沒有規划好,數據庫文件或日志文件增長過快,導致某個盤或整個磁盤空間不足,需要移動數據文件或日志文件
2: 純粹由於業務需求,數據增長過快。
3: 為了更好的IO的性能,需要將數據文件、日志文件分布到不同磁盤,減輕IO壓力,提供IO性能。
4:故障恢復。例如,數據庫處於可疑模式或因硬件故障而關閉。
案例:現在我在數據庫實例中有數據庫MyAssistant,(假設)由於事先沒有規划好,導致數據文件位於E:\DataBase目錄下, 我們需要將數據文件移動到D:\DataBase_Data目錄下,
將日志文件移動到F:\DataBase_Log目錄下。
步驟1:對數據庫中每個要移動的文件(數據文件/日志文件),通過下面命令指定到新的目錄
USE master GO ALTER DATABASE MyAssistant MODIFY FILE(NAME='MyAssistant', FILENAME='D:\DataBase_Data\MyAssistant.mdf'); GO ALTER DATABASE MyAssistant MODIFY FILE(NAME='MyAssistant_log', FILENAME='F:\DataBase_Log\MyAssistant_log.ldf'); GO
如果有多個數據庫的數據文件/日志文件需要移動,可以通過一系列上述命令執行
ALTER DATABASE DATABASE_ID1 MODIFY FILE(NAME='DATABASE_NAME', FILENAME='....mdf'); ALTER DATABASE DATABASE_ID2 MODIFY FILE(NAME='DATABASE_NAME', FILENAME=.....mdf'); .......
步驟2:停止SQL Server實例,你可以在SQL Server Management Studio的配置工具Sql Server Configuration Manager下停止。也可用NET STOP MSSQLSERVER命令實現。
步驟3:將那些數據文件或日志文件手工移動到對應的目錄(也就是上面命令中FILENAME對應的目錄)
步驟4:重啟SQL Server實例,驗證數據文件遷移是否成功。
SELECT name, physical_name FROM sys.master_files WHERE database_id = DB_ID('MyAssistant');
二:遷移系統數據庫文件
遷移系統數據庫文件與遷移用戶數據庫文件稍微有些不同,主要是master數據庫有點特殊,下面介紹一下遷移master系統數據庫的步驟:
步驟1:如果SQL Server實例已經啟動,那么停止該實例;這一步也完全可以忽略不做。
步驟2:修改啟動參數(配置管理器-高級標簽-啟動參數)
-dD:\sqldata\master.mdf;
-eC:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\Log\ERRORLOG;
-lE:\sqllog\mastlog.ldf
步驟3:關閉實例服務,拷貝master數據庫的相關文件到目標文件。如上所示,把master數據的數據文件和日志文件分別從C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA下拷貝到D:\sqldata 和E:\sqllog\目錄下。
步驟4:啟動服務。檢查OK沒有問題后,刪除master數據庫在原C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA下的文件。
遷移model、msdb、tempdb數據庫的步驟如下:
步驟1: 執行下面腳步
USE master GO ALTER DATABASE msdb MODIFY FILE(NAME='MSDBData', FILENAME='D:\sqldata\MSDBData.mdf') ; GO ALTER DATABASE msdb MODIFY FILE(NAME='MSDBLog', FILENAME='E:\sqllog\MSDBLog.ldf') ; GO ALTER DATABASE model MODIFY FILE(NAME='modeldev', FILENAME='D:\sqldata\model.mdf') ; GO ALTER DATABASE model MODIFY FILE(name='modellog' , filename='E:\sqllog\modellog.ldf') ; GO ALTER DATABASE tempdb MODIFY FILE(name='tempdev', filename='D:\sqldata\tempdb.mdf') ; GO ALTER DATABASE tempdb MODIFY FILE(name='templog', filename='E:\sqllog\templog.ldf') ; GO
步驟2:停止SQL SERVER服務,移動數據文件到制定路徑,需要注意的是:對於臨時數據庫,由於每次啟動 MSSQLSERVER 服務時都會重新創建 tempdb,因此不需要從物理意義上移動數據和日志文件。
步驟3: 啟動SQL SERVER服務,驗證修改是否生效。
步驟4: 刪除原來的數據文件。