Циклически перебирайте список БД в однопользовательском режиме - PullRequest
0 голосов
/ 12 октября 2018

Я пытаюсь создать динамический оператор SQL, чтобы перевести базу данных в однопользовательский режим, чтобы позже я смог восстановить ее.Я поместил задачу «Выполнить SQL» в цикле, где параметр используется для предоставления имени следующей базы данных для однопользовательского режима.Однако я не уверен, может ли Execute SQL запускать DML или просто SQL, и я не уверен, что все это можно сделать динамически в цикле.Вот мой код в стороне задачи выполнения SQL.

DECALRE @SQLString nvarchar (200)

SET @SQLString = 'ALTER DATABASE [' +?+ ']' + 'УСТАНОВИТЬ ОДИНОЧНОГО ПОЛЬЗОВАТЕЛЯ С ROLLBACK IMMEDIATE'

ВЫПОЛНИТЬ (@SQLString)

Знак вопроса - это место для OLEDB для имени базы данных, которую я задаю для одногопользовательский режим.

Это на SQL2012

1 Ответ

0 голосов
/ 16 октября 2018

Да. Задача «Выполнение SQL» позволит вам выполнять ALTER DATABASE команды, а также DML, DDL и другие подобные операторы.Похоже, что вы хотите использовать цикл по каждому элементу, и это будет хорошо работать, используя синтаксис из вашего вопроса для подключения OLE DB.Как упомянуто в комментарии @Ven, предпочтительным методом будет сделать это через хранимую процедуру с именем базы данных в качестве переменной.

...