T-SQL语句不会在grant语句中接受变量作为角色名称

时间:2011-01-27 11:30:59

标签: sql sql-server-2008 variables roles grant

我想在SQL Server 2008中创建一个存储过程来创建数据库角色并为它们授予权限,这需要一个参数,nvarchar表示要创建的角色名称,但我不确定怎么写这个。

我可以使用此

创建角色
EXEC sp_addrole @RoleName

但是当我尝试使用此

授予角色权限时
Grant select on dbo.someTable to  @RoleName

它不会接受@RoleName,我该如何做呢?

感谢

1 个答案:

答案 0 :(得分:6)

使用动态SQL以文本形式生成sql语句,然后可以使用EXEC

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