在SQL SERVER中如何更改一个正在运行的数据库的名字(不能删除数据库)?

时间:2021-10-02 05:01:32
在SQL SERVER中如何更改一个正在运行的数据库的名字(不能删除数据库)?

8 个解决方案

#1


应该不能实现.

#2


use master
exec sp_renamedb '旧库名','新库名'

#3


正在使用的库不能改名

#4


建哥,我试了一下,好像不可以的。系统提示:已经锁定

#5


已经锁定说明有人在使用数据库,当前有人在用的数据库不不能改名的.

#6


--你可以强制断开用户连接来改名,用下面的

use master
go

declare @dbname sysname,@newname sysname
select @dbname='pubs' --要改名的数据库
,@newname='test' --修改后的数据库名

declare @s nvarchar(1000)
declare tb cursor local for
select s='kill '+cast(spid as varchar)
from master..sysprocesses 
where dbid=db_id(@dbname)

open tb 
fetch next from tb into @s
while @@fetch_status=0
begin
exec(@s)
fetch next from tb into @s
end
close tb
deallocate tb

exec sp_renamedb @dbname,@newname

#7


谢谢建哥,已经OK,但不知在SYSBASE里是否可以这样写呢?

#8


sybase不会,应该不可以吧.

#1


应该不能实现.

#2


use master
exec sp_renamedb '旧库名','新库名'

#3


正在使用的库不能改名

#4


建哥,我试了一下,好像不可以的。系统提示:已经锁定

#5


已经锁定说明有人在使用数据库,当前有人在用的数据库不不能改名的.

#6


--你可以强制断开用户连接来改名,用下面的

use master
go

declare @dbname sysname,@newname sysname
select @dbname='pubs' --要改名的数据库
,@newname='test' --修改后的数据库名

declare @s nvarchar(1000)
declare tb cursor local for
select s='kill '+cast(spid as varchar)
from master..sysprocesses 
where dbid=db_id(@dbname)

open tb 
fetch next from tb into @s
while @@fetch_status=0
begin
exec(@s)
fetch next from tb into @s
end
close tb
deallocate tb

exec sp_renamedb @dbname,@newname

#7


谢谢建哥,已经OK,但不知在SYSBASE里是否可以这样写呢?

#8


sybase不会,应该不可以吧.