/* 該腳本示例如何完整的修改一個數據庫的名稱. 數據庫為原名稱為DB_BEIJING,需要修改成DB_SHANGHAI nzperfect 2012.12.19 */ --判斷是否存在同名的數據庫,以防止誤刪除 USE master GO IF EXISTS (SELECT name FROM sys.databases WHERE name = N'DB_BEIJING') BEGIN RAISERROR('請注意:數據庫已存在!',15,1) RETURN --DROP DATABASE DB_BEIJING END GO USE master GO --創建測試數庫 CREATE DATABASE [DB_BEIJING] ON PRIMARY ( NAME = N'DB_BEIJING', FILENAME = N'X:\DATA\DB_BEIJING.mdf' , SIZE = 3072KB , FILEGROWTH = 1024KB ) LOG ON ( NAME = N'DB_BEIJING_log', FILENAME = N'W:\Log\DB_BEIJING_log.ldf' , SIZE = 1024KB , FILEGROWTH = 1024KB ) GO --以下為修改過程 --step 1 : 修改數據庫名稱 USE master GO ALTER DATABASE DB_BEIJING SET SINGLE_USER WITH ROLLBACK IMMEDIATE GO EXEC master..sp_renamedb 'DB_BEIJING','DB_SHANGHAI' GO ALTER DATABASE DB_SHANGHAI SET MULTI_USER GO --step 2 : 查看修改名稱后的數據庫邏輯名及物理文件名 USE master GO SELECT name AS [Logical Name], physical_name AS [DB File Path],type_desc AS [File Type], state_desc AS [State] FROM sys.master_files WHERE database_id = DB_ID(N'DB_SHANGHAI') GO /* Logical Name DB File Path File Type State DB_BEIJING X:\DATA\DB_BEIJING.mdf ROWS ONLINE DB_BEIJING_log W:\Log\DB_BEIJING_log.ldf LOG ONLINE */ --step 3 : 修改數據庫邏輯文件名稱 USE master GO ALTER DATABASE DB_SHANGHAI SET SINGLE_USER WITH ROLLBACK IMMEDIATE GO ALTER DATABASE DB_SHANGHAI MODIFY FILE (NAME=N'DB_BEIJING', NEWNAME=N'DB_SHANGHAI') GO ALTER DATABASE DB_SHANGHAI MODIFY FILE (NAME=N'DB_BEIJING_log', NEWNAME=N'DB_SHANGHAI_log') GO ALTER DATABASE DB_SHANGHAI SET MULTI_USER GO --step 4 : 修改數據庫物理文件名稱之前先打開xp_cmdshell支持 USE master GO sp_configure 'show advanced options',1 GO RECONFIGURE WITH OVERRIDE GO sp_configure 'xp_cmdshell', 1 GO RECONFIGURE WITH OVERRIDE GO --step 5 : 重命名數據庫物理文件名稱 USE [master] GO ALTER DATABASE DB_SHANGHAI SET OFFLINE WITH ROLLBACK IMMEDIATE GO EXEC xp_cmdshell 'RENAME "X:\DATA\DB_BEIJING.mdf", "DB_SHANGHAI.mdf"' GO EXEC xp_cmdshell 'RENAME "W:\Log\DB_BEIJING_log.ldf", "DB_SHANGHAI_log.ldf"' GO --step 6 : 將數據庫邏輯名稱指向新的物理文件,並將數據庫online USE [master] GO ALTER DATABASE DB_SHANGHAI MODIFY FILE (NAME =DB_SHANGHAI, FILENAME = 'X:\DATA\DB_SHANGHAI.mdf') GO ALTER DATABASE DB_SHANGHAI MODIFY FILE (NAME =DB_SHANGHAI_log, FILENAME = 'W:\LOG\DB_SHANGHAI_log.ldf') GO ALTER DATABASE DB_SHANGHAI SET ONLINE --step 7 : 查看全部修改完成后的數據庫情況 USE master GO SELECT name AS [Logical Name], physical_name AS [DB File Path],type_desc AS [File Type], state_desc AS [State] FROM sys.master_files WHERE database_id = DB_ID(N'DB_SHANGHAI') GO /* Logical Name DB File Path File Type State DB_SHANGHAI X:\DATA\DB_SHANGHAI.mdf ROWS ONLINE DB_SHANGHAI_log W:\LOG\DB_SHANGHAI_log.ldf LOG ONLINE */ --step 8 : 關閉xp_cmdshell支持 USE master GO sp_configure 'xp_cmdshell', 0 GO RECONFIGURE WITH OVERRIDE GO sp_configure 'show advanced options',0 GO RECONFIGURE WITH OVERRIDE GO