日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

移动Sql Server数据库的脚本

發布時間:2024/4/17 数据库 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 移动Sql Server数据库的脚本 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前段時間做過這么一件事情,把原本放在c盤的所有數據庫(除了sql server系統文件外)文件Move到D盤,主要是為了方便后續管理以及減少磁盤I/O阻塞(C,D是2個獨立磁盤)。

腳本很簡單,在此只是記錄下來,以免以后忘記,也方便復用:

這個腳本只有2個參數需要輸入,即:目標數據庫名字目標目錄

?

USE master GODECLARE@DBName sysname,@DestPath varchar(256) DECLARE @DB table(name sysname,physical_name sysname)BEGIN TRYSELECT@DBName = 'TargetDatabaseName', --input database name@DestPath = 'D:\SqlData\' --input destination path-- kill database processes DECLARE @SPID varchar(20) DECLARE curProcess CURSOR FORSELECT spid FROM sys.sysprocesses WHERE DB_NAME(dbid) = @DBNameOPEN curProcessFETCH NEXT FROM curProcess INTO @SPIDWHILE @@FETCH_STATUS = 0BEGINEXEC('KILL ' + @SPID)FETCH NEXT FROM curProcessEND CLOSE curProcess DEALLOCATE curProcess-- query physical name INSERT @DB(name,physical_name) SELECTA.name,A.physical_name FROM sys.master_files A INNER JOIN sys.databases BON A.database_id = B.database_idAND B.name = @DBName WHERE A.type <=1--set offline EXEC('ALTER DATABASE ' + @DBName + ' SET OFFLINE')--move to dest path DECLARE@login_name sysname,@physical_name sysname,@temp_name varchar(256) DECLARE curMove CURSOR FOR SELECTname,physical_name FROM @DB OPEN curMoveFETCH NEXT FROM curMove INTO @login_name,@physical_nameWHILE @@FETCH_STATUS = 0BEGINSET @temp_name = RIGHT(@physical_name,CHARINDEX('\',REVERSE(@physical_name)) - 1)EXEC('exec xp_cmdshell ''move "' + @physical_name + '" "' + @DestPath + '"''')EXEC('ALTER DATABASE ' + @DBName + ' MODIFY FILE ( NAME = ' + @login_name+ ', FILENAME = ''' + @DestPath + @temp_name + ''')')FETCH NEXT FROM curMove INTO @login_name,@physical_nameEND CLOSE curMove DEALLOCATE curMove-- set online EXEC('ALTER DATABASE ' + @DBName + ' SET ONLINE')-- show result SELECTA.name,A.physical_name FROM sys.master_files A INNER JOIN sys.databases BON A.database_id = B.database_idAND B.name = @DBName END TRY BEGIN CATCHSELECT ERROR_MESSAGE() AS ErrorMessage END CATCH GO

?

轉載于:https://www.cnblogs.com/aarond/archive/2013/03/29/sqlserver.html

總結

以上是生活随笔為你收集整理的移动Sql Server数据库的脚本的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。