Sam*_*mWM 3 sql-server sql-server-2005
在SQL Server 2005中,如何将用户名的变量用于GRANT或DENY对具有数据库的对象的权限?我试过了:
DECLARE @username varchar(30)
SET @username = 'DOMAIN\UserName'
GRANT SELECT ON [mytable] TO @username
GRANT UPDATE([field one], [field two], [field three]) ON [mytable] TO @username
Run Code Online (Sandbox Code Playgroud)
我明白了Incorrect syntax near '@username',然后我将它包裹在[和]中
GRANT SELECT ON [mytable] TO [@username]
Run Code Online (Sandbox Code Playgroud)
然而,这导致了Cannot find the user '@username', because it does not exist or you do not have permission.如何在不输入每个语句的用户名的情况下执行此操作?我想这样做是为了减少任何拼写错误的机会(这可能导致错误的用户获得权限设置)
你需要动态的SQL,如果你想看看将要执行什么,请将EXEC改为PRINT添加了引号功能,因为你需要围绕域用户使用括号
DECLARE @username varchar(30)
SET @username = 'DOMAIN\UserName'
SET @username = quotename(@username)
exec ('GRANT SELECT ON [mytable] TO ' + @username )
exec ('GRANT UPDATE([field one], [field two], [field three]) ON [mytable] TO ' + @username )
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4121 次 |
| 最近记录: |