#sql-server #database
#sql-сервер #База данных
Вопрос:
Я работаю в SQL Server версии 17.9.1
У меня возникли проблемы с запуском инструмента диаграммы базы данных. Я нашел здесь код для изменения авторизации в базе данных. Код работал нормально. Моя проблема в том, что у меня есть несколько баз данных, которые мне нужно обновить с помощью созданных мной хранимых процедур. У меня есть переменная, которую необходимо присоединить к оператору alter, но я не знаком с синтаксисом кода для этого.
Вызывается переменная @TrainDB1
.
Команда alter является
Alter AUTHORIZATION ON DATABASE::NorthWindlev3 TO sa;
Буду признателен за любую помощь.
Ответ №1:
Вам нужно будет использовать динамический SQL, чтобы вы могли передать свою переменную для использования в инструкции alter authorization
Вот пример
declare @DBName nvarchar(max) = 'someDb', @SQL nvarchar(max) = ''
select @SQL = 'Alter AUTHORIZATION ON DATABASE::' quotename(@DBName) ' TO sa'
exec sp_executesql @SQL
Комментарии:
1. Это было бы довольно сложной проблемой, подобной этой, и я не сомневаюсь, что именно поэтому у нее понижающий голос. При внедрении вы должны убедиться, что вы правильно цитируете динамические объекты.
2. @larnu обновлен, чтобы использовать quotename, чтобы позаботиться об этом.