1. 程式人生 > >SQL SERVER 如何修改資料庫檔案路徑

SQL SERVER 如何修改資料庫檔案路徑

最近遇到一個伺服器的資料庫檔案增長很快,情況屬於正常,磁碟空間很快就要滿了,但是另一個分割槽還有大把的空間,所以尋思著怎麼把資料庫檔案,放過去,程式碼如下:

DECLARE @DBNAME VARCHAR(255) DECLARE @TargetPath VARCHAR(255) DECLARE @CmdCommand VARCHAR(2000)

SET @DBNAME='TEST' SET @TargetPath='D:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA'

--第一步:設定資料庫離線 SET @CmdCommand= 'ALTER DATABASE

'[email protected]+' SET OFFLINE' EXEC(@CmdCommand)

--第二步:物理拷貝資料庫檔案到新目錄 DECLARE @FileName VARCHAR(255) DECLARE @SourceFullName VARCHAR(255) DECLARE FileCur CURSOR for SELECT name,physical_name from sys.master_files where database_id=db_id(@DBNAME) OPEN FileCur FETCH NEXT FROM FileCur INTO @FileName,@SourceFullName WHILE @@FETCH_STATUS=0 BEGIN  SET @CmdCommand= 'copy "

'[email protected]+'" "'[email protected]+'"'  EXEC master..xp_cmdshell @CmdCommand    --修改資料庫檔案的路徑指向新目錄  SET @CmdCommand='ALTER DATABASE '[email protected]+' MODIFY FILE(FILENAME='''[email protected]+CASE WHEN RIGHT(@TargetPath,1)='\'THEN'' ELSE'\' END+   RIGHT(@SourceFullName, CHARINDEX('\', REVERSE(@SourceFullName))-1)+''',name='''
[email protected]
+''')'  EXEC(@CmdCommand)  FETCH NEXT FROM FileCur INTO @FileName,@SourceFullName END CLOSE FileCur DEALLOCATE FileCur

--第三步:設定資料庫聯機 SET @CmdCommand= 'ALTER DATABASE '[email protected]+' SET ONLINE' EXEC(@CmdCommand)

也可以把這個做成一個過程,就不在這裡修改了。