Sqlserver移動檔案路徑move datafile的三種方法

lusklusklusk發表於2019-04-23

sqlserver移動檔案的三種方法

1、設定資料庫分離,再把檔案複製到新目錄,再附加

2、設定資料庫離線,再把檔案複製到新目錄,

再ALTER DATABASE XX MODIFY FILE (NAME='logicalname',FILENAME='新目錄\YY.dbf');

再聯機

3、ALTER DATABASE XX MODIFY FILE (NAME='logicalname',FILENAME='新目錄\YY.dbf');

再關閉例項,再複製檔案到新目錄,再啟動例項


其中查詢NAME和FILENAME的語句,假設資料庫名為XX

SELECT name,physical_name FROM master.sys.master_files WHERE database_id =DB_ID(N'XX');


如果檔案型別是filestream,則上面FILENAME是目錄(如下D:\FS1.FILESTREAM\Netfile_FS1是目錄)

ALTER DATABASE Netfile1 MODIFY FILE (NAME = 'Netfile_FS1', FILENAME = 'D:\FS1.FILESTREAM\Netfile_FS1'); 



注意事項

1、always on的主副本不適用以上方法1、2,只能適用以上方法3

2、always on的輔助副本不適用以上方法1、2、3,需要在方法3的基礎上做特殊處理

3、mirror的主庫、從庫都不適用以上方法1、2,只能適用以上方法3

4、logshipping的主庫適用以上方法1、2、3

5、logshipping的從庫不適用以上方法1、2,只能適用以上方法3


設定資料庫離線時,先執行如下,檢視是否有事務,有事務的話,要不殺掉,要麼等事務執行完畢
DBCC OPENTRAN (dbname)

select * from sys.sysprocesses where dbid=db_id('dbname')

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30126024/viewspace-2642320/,如需轉載,請註明出處,否則將追究法律責任。

相關文章