Оператор T-SQL не принимает переменную в качестве имени роли в операторе предоставления - PullRequest
3 голосов
/ 27 января 2011

Я хочу создать хранимый процесс в SQL Server 2008 для создания ролей базы данных и предоставления им разрешений, который принимает один параметр, nvarchar, который представляет имя роли, которое необходимо создать, но я не уверен, как напиши это.

Я могу создать роль с этим

EXEC sp_addrole @RoleName

но когда я пытаюсь предоставить разрешения роли с этим

Grant select on dbo.someTable to  @RoleName

он не примет @RoleName, как мне это сделать?

спасибо

1 Ответ

6 голосов
/ 27 января 2011

Использование динамического SQL для генерации оператора sql в виде текста, который затем можно запустить с помощью EXEC

declare @sql nvarchar(max)
set @sql = 'Grant select on dbo.someTable to ' + @RoleName  -- protect if required
EXEC (sql)
...