如何完整的修改一个数据库的名称

nzperfect 2012-12-19 05:33:47
加精


/*
该脚本示例如何完整的修改一个数据库的名称.
数据为原名称为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:\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














以下为csdn广告:
...全文
9954 78 打赏 收藏 转发到动态 举报
写回复
用AI写文章
78 条回复
切换为时间正序
请发表友善的回复…
发表回复
小小毛毛虫~ 2013-01-07
  • 打赏
  • 举报
回复
标注一下~~学习中~~
huangya0 2013-01-07
  • 打赏
  • 举报
回复
学习了........
mickers 2013-01-06
  • 打赏
  • 举报
回复
深深被大叔的精神感动,蛋叹荷包见底,话说更改一个数据库可真费劲,书上只是简单介绍运行sp_rename即可
喜太狼 2013-01-06
  • 打赏
  • 举报
回复
大叔第9点简直是重中之重~~~
索隆 2013-01-05
  • 打赏
  • 举报
回复
LZ V5~~~ 我想问一下,什么情况下要改数据库的名称呢?
softneo 2013-01-03
  • 打赏
  • 举报
回复
回帖得十分!
kity 2012-12-30
  • 打赏
  • 举报
回复
shenke6666 2012-12-26
  • 打赏
  • 举报
回复
学习了 感谢分享
ZXJHYB 2012-12-26
  • 打赏
  • 举报
回复
好东西 不赖 已存入“百宝囊”
笑莫问 2012-12-23
  • 打赏
  • 举报
回复
学习了,谢谢楼主。
liaogaolun2012 2012-12-22
  • 打赏
  • 举报
回复
学习了,非常给力
aaafffffffff 2012-12-21
  • 打赏
  • 举报
回复
顶一个。。。。。。。。。。。。
子龍威武 2012-12-21
  • 打赏
  • 举报
回复
thanks,studying
wsxcdx 2012-12-21
  • 打赏
  • 举报
回复
学习,收藏
xyzhilong 2012-12-21
  • 打赏
  • 举报
回复
学习了,谢谢楼主。
F15Eagle 2012-12-20
  • 打赏
  • 举报
回复
甚好甚好。。。
  • 打赏
  • 举报
回复
yanjiushenghefeng 2012-12-20
  • 打赏
  • 举报
回复
什么东西我看不懂
kancanghai 2012-12-20
  • 打赏
  • 举报
回复
huahuadezuiba 2012-12-20
  • 打赏
  • 举报
回复
那要顶 多支持吧
加载更多回复(49)

11,848

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 非技术版
社区管理员
  • 非技术版社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧