Циклически перебирайте список БД, устанавливая БД в однопользовательский режим

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

DECALRE @SQLString nvarchar (200)

SET @SQLString = 'ALTER DATABASE [' +? + ']' + 'УСТАНОВИТЬ ОДИНОЧНОГО ПОЛЬЗОВАТЕЛЯ С НЕМЕДЛЕННОЙ РОЛБЭК'

EXECUTE (@SQLString)

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

Это на SQL2012

1 ответ

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

Другие вопросы по тегам