Циклически перебирайте список БД, устанавливая БД в однопользовательский режим
Я пытаюсь создать динамический оператор 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, предпочтительным методом будет сделать это через хранимую процедуру с именем базы данных в качестве переменной.