Назад | Перейти на главную страницу

Как переименовать базу данных без предварительной остановки экземпляра 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 для включения последующего однопользовательского режима в двух базах данных, существует ли менее навязчивый способ сделать это? Спасибо.

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

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