Синтаксис предоставления для доменапользователя
Я пытаюсь предоставить доступ пользователю 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];