我是靠谱客的博主 甜甜犀牛,最近开发中收集的这篇文章主要介绍給數據庫改名,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述


/*
该脚本示例如何完整的修改一个数据库的名称.
数据为原名称为DB_BEIJING,需要修改成DB_SHANGHAI
perfectaction 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:DATADB_BEIJING.mdf' ,
 SIZE = 3072KB ,
 FILEGROWTH = 1024KB
)
LOG ON
(
 NAME = N'DB_BEIJING_log',
 FILENAME = N'W:LogDB_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:DATADB_BEIJING.mdf  ROWS  ONLINE
DB_BEIJING_log W:LogDB_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:DATADB_BEIJING.mdf", "DB_SHANGHAI.mdf"'
GO
EXEC xp_cmdshell 'RENAME "W:LogDB_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:DATADB_SHANGHAI.mdf')
GO
ALTER DATABASE DB_SHANGHAI MODIFY FILE (NAME =DB_SHANGHAI_log, FILENAME = 'W:LOGDB_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:DATADB_SHANGHAI.mdf  ROWS  ONLINE
DB_SHANGHAI_log W:LOGDB_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

最后

以上就是甜甜犀牛为你收集整理的給數據庫改名的全部内容,希望文章能够帮你解决給數據庫改名所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(51)

评论列表共有 0 条评论

立即
投稿
返回
顶部