我想给一个活动目录用户访问仅限于一个特定的表。我希望他们可以插入、更新、删除等操作,但是只限于那个表。我知道这个命令:
GRANT Insert, Select on Tablename to user
但是我无法弄清楚如何在语法上让"domain\user"起作用。 我尝试了:
GRANT Insert, Select on Tablename to domain\user
但我得到的是:
Msg 102,级别 15,状态 1
错误语法 ' \' '附近。
我想给一个活动目录用户访问仅限于一个特定的表。我希望他们可以插入、更新、删除等操作,但是只限于那个表。我知道这个命令:
GRANT Insert, Select on Tablename to user
但是我无法弄清楚如何在语法上让"domain\user"起作用。 我尝试了:
GRANT Insert, Select on Tablename to domain\user
但我得到的是:
Msg 102,级别 15,状态 1
错误语法 ' \' '附近。
CREATE LOGIN [domain\user] FROM WINDOWS;
GO
USE your_database;
GO
CREATE USER [domain\user] FROM LOGIN [domain\user];
GO
然后你只需按照相同的语法进行操作。因为 \
不是标识符的标准字符,所以你需要用 [方括号]
对名称进行转义:
GRANT SELECT, INSERT, UPDATE, DELETE ON dbo.Tablename TO [domain\user];
创建角色并将用户添加到该角色中是一个好的实践。然后授予该角色权限。
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];
GRANT ... TO domain\user
,并得到了Msg 102, Level 15, State 1, Line 181 Incorrect syntax near '\'
的错误信息。你是在暗示我的答案不是关于编程的答案,而仅仅与数据库管理有关吗?如果是这样,我完全不同意。 - Aaron Bertrand