域\用户的GRANT语法

时间:2014-01-03 16:07:45

标签: sql-server sql-server-2008 active-directory grant

我正在尝试将活动目录用户的访问权限仅授予一个特定的表。我希望他们能够插入,更新,删除等,但仅限于该表。我知道这个命令:

GRANT Insert, Select on Tablename to user

但我无法弄清楚如何让“域\用户”以语法方式工作。我试过了:

GRANT Insert, Select on Tablename to domain\user

但我明白了:

  

消息102,级别15,状态1左'\'附近的语法不正确。

2 个答案:

答案 0 :(得分:32)

假设您已在此数据库中创建了与AD登录相关联的用户,例如

CREATE LOGIN [domain\user] FROM WINDOWS;
GO
USE your_database;
GO
CREATE USER [domain\user] FROM LOGIN [domain\user];
GO

然后你只需要遵循相同的语法。由于\不是标识符的标准字符,因此您需要使用[square brackets]转义名称:

GRANT SELECT, INSERT, UPDATE, DELETE ON dbo.Tablename TO [domain\user];

答案 1 :(得分:0)

创建角色并将用户添加到该角色是一个好习惯。然后,授予该角色权限。

USE database_name
GO

--1)create role 
CREATE ROLE role_name
GO

--2 create user
IF NOT EXISTS (SELECT * FROM sys.database_principals WHERE name = N'domain\user')
BEGIN
    CREATE USER [domain\user] FOR LOGIN [domain\user]
END;
GO

-- 3 Add user to the role
ALTER ROLE [role_name] ADD MEMBER [domain\user]
GO

--4 Grant permissions to the role
GRANT SELECT, INSERT, UPDATE, DELETE ON dbo.Tablename TO [role_name];