2015-07-28 2 views
0

Итак, у меня есть стороннее программное обеспечение поставщика, которое я должен вызвать в SQL Agent Job для восстановления моих баз данных. Таким образом, мой первый шаг - установить базу данных в однопользовательском режиме, мой второй шаг - вызвать программное обеспечение для запуска восстановления. Проблема в том, что программное обеспечение занимает настолько много времени, чтобы фактически начать восстановление (его выполнение по всей сети), которое может использовать другой пользователь и использовать базу данных.Выполнение соединения в однопользовательском режиме

Есть ли способ разместить БД в однопользовательском режиме, а затем сразу же захватить это соединение? Я попытался с несколькими «Select Getdate()», но я чувствую, что это берет его из системы, а не из базы данных. Нужно ли мне выбирать из конкретной таблицы в базе данных, чтобы заставить ее работать?

Благодаря

ответ

2

Вместо того, чтобы разместить базу данных в однопользовательском режиме, взять базу данных в автономном режиме в контексте другой базы данных:

USE tempdb; 
ALTER DATABASE DatabaseToRestore 
    SET OFFLINE WITH ROLLBACK IMMEDIATE; 
+0

Позвольте мне попробовать. – Limey

+0

Это решило мою проблему! благодаря! – Limey

0

Используйте опцию «Client Application Name» вместе с «- m ", который помещает SQL в однопользовательский режим.

Таким образом, только приложение, соответствующее указанному имени, может подключаться и принимать соединение. Очевидно, что вам нужно убедиться, что процесс вашего клиента, который выполняет восстановление, имеет четкое имя!

Смотрите здесь для получения информации о различных параметрах запуска SQL Server: https://msdn.microsoft.com/en-us/library/ms190737.aspx

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

+0

Непривилегированные пользователи могут обращаться к базе данных в режиме «SINGLE_USER», хотя разрешен только первый доступ. Возможно, вы думаете о «RESTRICTED_USER»? –

+0

Это установит весь экземпляр в режиме одиночного пользователя, мне нужно будет сделать это DB по базе данных. – Limey

+0

Ах да, вы правы - честно говоря, я не знал, что вы можете поместить отдельный БД в однопользовательский режим, поэтому я действительно не замечал эту деталь в вашем вопросе. Ответ Дэна выглядит хорошо, надеюсь, он работает на вас. Я тоже узнал что-то новое! – beercohol

Смежные вопросы