我正在尝试将活动目录用户的访问权限仅授予一个特定的表。我希望他们能够插入,更新,删除等,但仅限于该表。我知道这个命令:
GRANT Insert, Select on Tablename to user
但我无法弄清楚如何让“域\用户”以语法方式工作。我试过了:
GRANT Insert, Select on Tablename to domain\user
但我明白了:
消息102,级别15,状态1左'\'附近的语法不正确。
答案 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];