web-dev-qa-db-ja.com

ドメイン\ユーザーのGRANT構文

1つの特定のテーブルのみにActive Directoryユーザーへのアクセスを許可しようとしています。挿入、更新、削除などができるようにしたいのですが、そのテーブルに対してのみです。私はこのコマンドを知っています:

GRANT Insert, Select on Tablename to user

しかし、「ドメイン\ユーザー」を構文的に機能させる方法はわかりません。私は試した:

GRANT Insert, Select on Tablename to domain\user

しかし、私は得る:

メッセージ102、レベル15、状態1
「\」付近の構文が正しくありません。

25
bvankampen

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];
33
Aaron Bertrand

ロールを作成し、そのロールにユーザーを追加することをお勧めします。次に、そのロールにアクセス許可を付与します。

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