Гость
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как гарантировано занять сессию, после перевода базы в SINGLE_USER? / 9 сообщений из 9, страница 1 из 1
02.07.2020, 11:30
    #39975275
teCa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как гарантировано занять сессию, после перевода базы в SINGLE_USER?
Всем привет.
Подскажите пожалуйста, использую вот такую конструкцию:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
Set @Q = 'USE ' + @dbname + '
		SET DEADLOCK_PRIORITY HIGH
		ALTER DATABASE ' + @dbname + ' SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
		ALTER DATABASE ' + @dbname + ' Modify Name = ' + @dbname + '_todel;
		ALTER DATABASE ' + @dbname + '_todel SET MULTI_USER
		USE ADMIN
		'
		--print @Q
		exec sp_executesql @Q



Иногда эта конструкция не срабатывает, обрываясь ошибкой:

авторThe database could not be exclusively locked to perform the operation.

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

Подскажите, как можно исключить "вклинивание" сторонней сессии, внутри этой конструкции?
...
Рейтинг: 0 / 0
02.07.2020, 11:43
    #39975288
a_voronin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как гарантировано занять сессию, после перевода базы в SINGLE_USER?
...
Рейтинг: 0 / 0
02.07.2020, 14:57
    #39975476
teCa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как гарантировано занять сессию, после перевода базы в SINGLE_USER?


Им можно пользоваться из хранимой процедуры?
...
Рейтинг: 0 / 0
02.07.2020, 15:23
    #39975490
invm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как гарантировано занять сессию, после перевода базы в SINGLE_USER?
teCa
Подскажите, как можно исключить "вклинивание" сторонней сессии, внутри этой конструкции?
Никак.
Оборачивайте в try/catch и делайте повтор выполнения при этой ошибке.
teCa
Им можно пользоваться из хранимой процедуры?
DAC ни к хранимым процедурам, ни к лечению вашей проблемы вообще отношения не имеет, от слова "совсем".
...
Рейтинг: 0 / 0
02.07.2020, 16:02
    #39975521
SQL2008
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как гарантировано занять сессию, после перевода базы в SINGLE_USER?
teCa
Подскажите, как можно исключить "вклинивание" сторонней сессии, внутри этой конструкции?

Вклинивания нет, есть незакрытые процессы перед выполнением скрипта.
Проверяйте перед запуском.
Если есть еще процессы, то киляйте их или ждите - не все процессы можно убить.
...
Рейтинг: 0 / 0
02.07.2020, 16:29
    #39975534
a_voronin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как гарантировано занять сессию, после перевода базы в SINGLE_USER?
SQL2008,

Вообще-то у него стоит

SET SINGLE_USER WITH ROLLBACK IMMEDIATE
...
Рейтинг: 0 / 0
02.07.2020, 16:43
    #39975543
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как гарантировано занять сессию, после перевода базы в SINGLE_USER?
teCa,

отключите возможность подключения к серверу извне (файрвол, отключение протоколов), отключите агента. Подключайтесь к базе.
...
Рейтинг: 0 / 0
02.07.2020, 17:43
    #39975567
felix_ff
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как гарантировано занять сессию, после перевода базы в SINGLE_USER?
Владислав Колосов,

фоновые процессы дополнительно могут базу занимать, самый эффективный способ предложил invm
...
Рейтинг: 0 / 0
02.07.2020, 18:29
    #39975584
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как гарантировано занять сессию, после перевода базы в SINGLE_USER?
felix_ff,

если есть локальные процессы, то вообще нет гарантий, что удастся когда-либо подключиться без удаления этих процессов.
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как гарантировано занять сессию, после перевода базы в SINGLE_USER? / 9 сообщений из 9, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]