首頁 資料庫 mysql教程 sqlserver数据库移动数据库路径的脚本示例

sqlserver数据库移动数据库路径的脚本示例

Jun 07, 2016 pm 04:19 PM
sqlserver 資料庫 範例 移動 腳本 路徑

您现在的位置:首页>教程>编程开发>mssql数据库 > sqlserver数据库移动数据库路径的脚本示例 sqlserver数据库移动数据库路径的脚本示例 感谢 3lian8 的投递 时间:2013-12-06 来源:三联教程 前段时间做过这么一件事情,把原本放在c盘的所有数据库(除了sql

  您现在的位置:首页 > 教程 > 编程开发 > mssql数据库 > sqlserver数据库移动数据库路径的脚本示例

sqlserver数据库移动数据库路径的脚本示例

感谢 3lian8 的投递 时间:2013-12-06 来源:三联教程 

      前段时间做过这么一件事情,把原本放在c盘的所有数据库(除了sql server系统文件外)文件Move到D盘,,主要是为了方便后续管理以及减少磁盘I/O阻塞(C,D是2个独立磁盘)。脚本需输入2个参数:目标数据库名字和目标目录

 

代码如下:

USE master

GO

 

DECLARE

    @DBName sysname,

    @DestPath varchar(256)

DECLARE @DB table(

    name sysname,

    physical_name sysname)

 

 

BEGIN TRY

 

SELECT

    @DBName = 'TargetDatabaseName',   --input database name

    @DestPath = 'D:SqlData'         --input destination path

 

 

-- kill database processes

DECLARE @SPID varchar(20)

DECLARE curProcess CURSOR FOR

 

SELECT spid

FROM sys.sysprocesses

WHERE DB_NAME(dbid) = @DBName

 

OPEN curProcess

    FETCH NEXT FROM curProcess INTO @SPID

    WHILE @@FETCH_STATUS = 0

    BEGIN

            EXEC('KILL ' + @SPID)

            FETCH NEXT FROM curProcess

    END

CLOSE curProcess

DEALLOCATE curProcess

 

-- query physical name

INSERT @DB(

    name,

    physical_name)

SELECT

    A.name,

    A.physical_name

FROM sys.master_files A

INNER JOIN sys.databases B

    ON A.database_id = B.database_id

        AND B.name = @DBName

WHERE A.type

 

--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

SELECT

    name,

    physical_name

FROM @DB

OPEN curMove

    FETCH NEXT FROM curMove INTO @login_name,@physical_name

        WHILE @@FETCH_STATUS = 0

        BEGIN

            SET @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_name

        END

CLOSE curMove

DEALLOCATE curMove

 

-- set online

EXEC('ALTER DATABASE ' + @DBName + ' SET ONLINE')

 

-- show result

SELECT

    A.name,

    A.physical_name

FROM sys.master_files A

INNER JOIN sys.databases B

    ON A.database_id = B.database_id

        AND B.name = @DBName

END TRY

BEGIN CATCH

    SELECT ERROR_MESSAGE() AS ErrorMessage

END CATCH

GO

 

 

相关文章

标签:

[返回三联首页] [返回mssql数据库栏目] / [加入三联文集]

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
2 週前 By 尊渡假赌尊渡假赌尊渡假赌
倉庫:如何復興隊友
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

sqlserver怎麼匯入mdf文件 sqlserver怎麼匯入mdf文件 Apr 08, 2024 am 11:41 AM

sqlserver怎麼匯入mdf文件

sqlserver誤刪資料庫怎麼恢復 sqlserver誤刪資料庫怎麼恢復 Apr 05, 2024 pm 10:39 PM

sqlserver誤刪資料庫怎麼恢復

sqlserver安裝失敗怎麼樣刪除乾淨 sqlserver安裝失敗怎麼樣刪除乾淨 Apr 05, 2024 pm 11:27 PM

sqlserver安裝失敗怎麼樣刪除乾淨

6000 毫安矽負極電池!小米 15Pro 升級再曝料 6000 毫安矽負極電池!小米 15Pro 升級再曝料 Jul 24, 2024 pm 12:45 PM

6000 毫安矽負極電池!小米 15Pro 升級再曝料

mysql和sqlserver語法有什麼差別 mysql和sqlserver語法有什麼差別 Apr 22, 2024 pm 06:33 PM

mysql和sqlserver語法有什麼差別

sqlserver刪除的資料怎麼恢復 sqlserver刪除的資料怎麼恢復 Apr 05, 2024 pm 10:45 PM

sqlserver刪除的資料怎麼恢復

sqlserver怎麼刪除資料庫 sqlserver怎麼刪除資料庫 Apr 05, 2024 pm 11:00 PM

sqlserver怎麼刪除資料庫

navicat資料庫檔案在哪 navicat資料庫檔案在哪 Apr 23, 2024 am 10:57 AM

navicat資料庫檔案在哪

See all articles