Оператор T-SQL не будет принимать переменную в качестве имени роли в операторе предоставления
Я хочу создать хранимый процесс в SQL Server 2008 для создания ролей базы данных и предоставления им разрешений, который принимает один параметр, nvarchar
это представляет имя роли, которое должно быть создано, но я не уверен, как написать это.
Я могу создать роль с этим
EXEC sp_addrole @RoleName
но когда я пытаюсь предоставить разрешения на роль с этим
Grant select on dbo.someTable to @RoleName
он не примет @RoleName, как мне это сделать?
Спасибо
1 ответ
Решение
Используйте динамический SQL для генерации оператора SQL в виде текста, который затем можно запустить с помощью EXEC
declare @sql nvarchar(max)
set @sql = 'Grant select on dbo.someTable to ' + @RoleName -- protect if required
EXEC (sql)