37 sql t-sql sql-server ssms
我有一个名为"ip_ent_site"的数据库.我想把它重命名为"ip_ent_site1".

我已经右键单击并重命名,它仍然是失败的.这是错误消息:

有人可以帮忙吗?
Raj*_*Raj 37
那是因为有开放交易.如果可以杀死这些事务,那么可以使用此SQL轻松完成
ALTER DATABASE ip_ent_site
SET SINGLE_USER WITH ROLLBACK IMMEDIATE
GO
sp_rename 'ip_ent_site', 'new_db_name' ,'DATABASE';
GO
ALTER DATABASE new_db_name
SET MULTI_USER
GO
Run Code Online (Sandbox Code Playgroud)
sql*_*ser 18
在重命名之前,请将数据库设置为单用户模式MSDN
USE master;
GO
ALTER DATABASE ip_ent_site
SET SINGLE_USER
WITH ROLLBACK IMMEDIATE;
Run Code Online (Sandbox Code Playgroud)
然后重命名它
USE master
GO
ALTER DATABASE ip_ent_site
Modify Name = ip_ent_site1
GO
Run Code Online (Sandbox Code Playgroud)
然后将其重新置于多用户模式
ALTER DATABASE ip_ent_site1
SET MULTI_USER;
Run Code Online (Sandbox Code Playgroud)
小智 13
原因是因为数据库在重命名时必须阻止与db的任何其他连接/事务.
一个简单的脚本来锁定数据库:
ALTER DATABASE [ip_ent_site] SET SINGLE_USER WITH ROLLBACK IMMEDIATE
GO
ALTER DATABASE [ip_ent_site] MODIFY NAME = [ip_ent_site_new]
GO
ALTER DATABASE [ip_ent_site_new] SET MULTI_USER;
GO
Run Code Online (Sandbox Code Playgroud)