Как переименовать базу данных без предварительной остановки экземпляра SQL для сброса соединений

Есть ли способ перевести базу данных в однопользовательский режим, чтобы можно было запустить скрипт для переименования баз данных? Я обнаружил, что должен перезапустить экземпляр SQL (чтобы принудительно отключить любые соединения от веб-приложения и т. Д.), А затем запустить этот сценарий:

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

После запуска этого сценария я могу перезапустить IIS для своего веб-приложения, и оно может подключиться к новой производственной базе данных.

Все вышеперечисленное работает хорошо, и мы делали это годами, но теперь мы обновились до SQL 2008, и экземпляр SQL2008 также содержит другие базы данных, которые поддерживают другие веб-приложения.

Таким образом, вместо использования перезапуска всего экземпляра SQL для включения последующего однопользовательского режима на двух базах данных, существует ли менее навязчивый способ сделать это? Благодарю.

1 ответ

Это должно уничтожить все открытые соединения с базой данных:

изменить базу данных mds установить single_user с немедленным откатом

Другие вопросы по тегам