MS-SQL запрос режима single_user прерван - PullRequest
0 голосов
/ 02 мая 2019

Я пытаюсь выполнить следующий запрос

ALTER DATABASE my_db
    SET SINGLE_USER
    WITH ROLLBACK IMMEDIATE;

DBCC SHRINKDATABASE (my_db, 2);

ALTER DATABASE my_db
    SET MULTI_USER;

Запрос начинает выполняться, база данных переходит в один пользовательский режим, я вижу всплеск использования моего процессора и диска в течение нескольких секунд (от 5 до 20 с) и затем я получаю сообщение об ошибке.

Database 'my_db' is already open and can only have one user at a time.

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

Ответы [ 2 ]

0 голосов
/ 02 мая 2019

Что вы можете сделать здесь.Выполнить:

exec sp_who

Это вернет вам процесс и его SP ID, который подключен к вашей БД.

Затем выполните команду kill

KILL SPID
0 голосов
/ 02 мая 2019

Сделайте это, чтобы избежать единственного подключения, используемого кем-то еще:

USE master;
GO
ALTER DATABASE my_db
    SET SINGLE_USER
    WITH ROLLBACK IMMEDIATE;
GO

USE my_db;     -- Grab that single connection immediately after db is in single_user mode
GO
DBCC SHRINKDATABASE (my_db, 2);
GO

ALTER DATABASE my_db
    SET MULTI_USER;
GO
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...