1つの特定のテーブルのみにActive Directoryユーザーへのアクセスを許可しようとしています。挿入、更新、削除などができるようにしたいのですが、そのテーブルに対してのみです。私はこのコマンドを知っています:
GRANT Insert, Select on Tablename to user
しかし、「ドメイン\ユーザー」を構文的に機能させる方法はわかりません。私は試した:
GRANT Insert, Select on Tablename to domain\user
しかし、私は得る:
メッセージ102、レベル15、状態1
「\」付近の構文が正しくありません。
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];