У нас есть несколько скриптов, которые выполняются во время установки нашего приложения.
Один из них используется для настройки сортировки базы данных, другой - для настройки уровня совместимости. Мы используем следующую конструкцию для этих сценариев:
ALTER DATABASE [DB_NAME] SET SINGLE_USER WITH ROLLBACK IMMEDIATE
GO
ALTER DATABASE [DB_NAME] SET COMPATIBILITY_LEVEL = DB_COMPATIBILITY_LEVEL
-- ALTER DATABASE [DB_NAME] COLLATE 'Collation Name'
GO
ALTER DATABASE [DB_NAME] SET MULTI_USER
GO
Вопрос :
Возможно ли, чтобы какой-то фоновый процесс получил доступ после установки однопользовательского режима ? В этом случае наш скрипт не может быть выполнен. Я видел эту проблему, и она кажется похожей, поэтому я решил задать вопрос.
https://social.msdn.microsoft.com/Forums/sqlserver/en-US/950c9b85-67f9-4272-8dff-14aa3590bc8a/single-user-mode-session-lost-after-backgound-processes-jump-in?forum=sqldatabaseengine
Эта проблема была связана с восстановлением базы данных.
alter database [test-db] set single_user with rollback immediate; --This sql is run using test-db
use master;restore database [test-db] from database_snapshot = 'snapshot_test-db';
alter database [test-db] set multi_user;
Но я не до конца понимаю разницу между восстановлением и изменением базы данных в однопользовательском режиме.
В первом случае достаточно будет перевести базу данных в автономный режим.
Любая помощь приветствуется.
Заранее спасибо.