Синтаксис предоставления для доменапользователя

Я пытаюсь предоставить доступ пользователю active directory только к одной конкретной таблице. Я хочу, чтобы они могли вставлять, обновлять, удалять и т. д. но только для этого стола. Я знаю эту команду:

GRANT Insert, Select on Tablename to user

но я не могу понять, как заставить "доменпользователь" работать синтаксически. Я попробовал:

GRANT Insert, Select on Tablename to domainuser

а я:

Msg 102, Уровень 15, Состояние 1
неверный синтаксис рядом с''.

2 ответов


предполагая, что вы создали пользователя в этой базе данных, связанного с логином 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];

рекомендуется создать роль и добавить в нее пользователей. Затем предоставьте разрешения на эту роль.

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];