木子屋 Dnawo's BLOG

SQL Server数据库重命名

👤 dnawo 📅 2008-12-25 👁 6746 👍 0 💬 0 🔄 本站原创
在企业管理器中我们无法对数据库进行重命名,下边介绍两种方法来实现对SQL Server数据库重命名。

方法一:使用系统存储过程sp_renamedb

在使用sp_renamedb对数据库进行重命名前必须确保所有使用数据库的连接都已关闭,打开"所有任务→分离数据库",点击清除按钮即可关闭数据库所有连接,然后在查询分析器中执行如下语句即可完成数据库重命名:

exec sp_renamedb 'olddbname','newdbname'

方法二:新建存储过程对数据库重命名

本存储过程可自动关闭数据库所有连接,然后再调用sp_renamedb进行重命名,代码如下:
/*
	数据库重命名
*/
Create procedure sp_renamedbnew
(
	@dbname varchar(30),
	@newdbname varchar(30)
)
as
	/* 清除数据库的所有连接 */
	declare @spid int
	declare @sqlforclear nvarchar(100)

	declare curid cursor forward_only read_only for (select spid from master.dbo.sysprocesses where db_name(dbid)=@dbname)
	open curid
	fetch next from curid into @spid
	while @@fetch_status = 0
	begin
		set @sqlforclear = N'kill ' + cast(@spid as nvarchar(10))
		exec sp_executesql @sqlforclear
		--if @@error = 0 print 'clear:' + cast(@spid as nvarchar(10))
		fetch next from curid into @spid
	end
	close curid
	deallocate curid

	/* 重命名 */
	exec sp_renamedb @dbname,@newdbname
GO

其他说明

1.如果提示:"未能排它地锁定数据库以执行该操作",应确保关闭了数据库所有连接再执行sp_renamedb;

2.如果提示:"不能用 KILL 来取消您自己的进程",则将查询分析器中的当前数据库设置为非重命名数据库再执行sp_renamedbnew;

评论(0)

暂无评论。

计算题
评论需审核通过后显示
← 上一篇 IIS6.0搭建FTP服务器示例 下一篇 → TXT导入MSSQL利器:BULK Insert