![如何在不先停止 SQL 实例以刷新连接的情况下重命名数据库](https://linux22.com/image/516055/%E5%A6%82%E4%BD%95%E5%9C%A8%E4%B8%8D%E5%85%88%E5%81%9C%E6%AD%A2%20SQL%20%E5%AE%9E%E4%BE%8B%E4%BB%A5%E5%88%B7%E6%96%B0%E8%BF%9E%E6%8E%A5%E7%9A%84%E6%83%85%E5%86%B5%E4%B8%8B%E9%87%8D%E5%91%BD%E5%90%8D%E6%95%B0%E6%8D%AE%E5%BA%93.png)
有没有办法强制数据库进入单用户模式,以便运行脚本来重命名数据库?我发现我必须重新启动 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 并立即回滚