如何在不先停止 SQL 实例以刷新连接的情况下重命名数据库

如何在不先停止 SQL 实例以刷新连接的情况下重命名数据库

有没有办法强制数据库进入单用户模式,以便运行脚本来重命名数据库?我发现我必须重新启动 SQL 实例(以强制关闭来自 Web 应用程序的任何连接等),然后才能运行此脚本:

USE master
go
sp_dboption MDS, "single user", true
go
sp_dboption StagingMDS, "single user", true
go
sp_renamedb MDS, LastMonthMDS
go
sp_renamedb StagingMDS, MDS
go
sp_dboption LastMonthMDS, "single user", false
go
sp_dboption MDS, "single user", false
go

该脚本运行后,我可以为我的 Web 应用程序重新启动 IIS,并且它可以连接到新的生产数据库。

以上所有操作都运行良好,并且我们已经这样做了很多年,但现在我们已经升级到 SQL 2008,并且 SQL2008 实例还托管支持其他 Web 应用程序的其他数据库。

那么,除了重新启动整个 SQL 实例来在 2 个数据库上启用后续的单用户模式之外,有没有一种干扰较小的方法来实现这一点?谢谢。

答案1

这应该会终止与数据库的所有打开的连接:

更改数据库 mds 设置 single_user 并立即回滚

相关内容