概要
特定のFileTableの共有フォルダーに特定のWindowsユーザーのアクセス権を付与する方法。
一応、MSDNに
FileTable セキュリティとファイル システム アクセス
ファイル システム API には、FileTable に格納されているファイルまたはディレクトリへのハンドルを開くための、FileTable の行全体に対する適切な SQL Server 権限 (つまり、テーブル レベルの権限) が必要です。 FileTable の列に対する適切な SQL Server 権限がユーザーに与えられていない場合、ファイル システム アクセスは拒否されます。
という説明があるが、これだけだと具体的にどうすればいいかわかりにくいため、補足的なメモ。
前提
FileTable自体は正常に作成済み(管理者権限ユーザーで共有フォルダーにアクセス可能)であること。
FileTableを使用可能とするための一連の手順については、以下のページが参考になる。
フォルダーの「セキュリティ」の設定は必要ない
一般的に共有フォルダーのアクセス権を設定する場合、フォルダー自体のセキュリティを設定(エクスプローラでフォルダーのプロパティを表示して「セキュリティ」タブを操作)するが、FileTableの共有フォルダーの場合はその必要はない。
FileTableの共有フォルダーのアクセス権設定は、SQL Server Management Studio上の操作で完結する。
インスタンスにログインを作成する
共有フォルダーへのアクセスを許可したいWindowsユーザーがSQL Serverインスタンスのログインとして追加されていない場合、新規に作成する。
USE [master]
GO
-- ログインの作成
CREATE LOGIN [MYDOMAIN\USER1] FROM WINDOWS WITH DEFAULT_DATABASE=[master], DEFAULT_LANGUAGE=[日本語];
データベースにユーザーを作成し権限を付与する
FileTableが属するデータベースに、上記のログインと紐づくユーザーを作成する。
ユーザーにはFileTableに対するGRANT ALLと同等の権限(DELETE/INSERT/REFERENCES/SELECT/UPDATE)およびVIEW DEFINITION権限を付与する。
USE [mydatabase]
GO
-- ユーザーの作成
CREATE USER [MYDOMAIN\USER1] FOR LOGIN [MYDOMAIN\USER1] WITH DEFAULT_SCHEMA=[dbo];
-- ユーザーへの権限付与
GRANT DELETE ON OBJECT::[dbo].[sample_filetable] TO [MYDOMAIN\USER1];
GRANT INSERT ON OBJECT::[dbo].[sample_filetable] TO [MYDOMAIN\USER1];
GRANT REFERENCES ON OBJECT::[dbo].[sample_filetable] TO [MYDOMAIN\USER1];
GRANT SELECT ON OBJECT::[dbo].[sample_filetable] TO [MYDOMAIN\USER1];
GRANT UPDATE ON OBJECT::[dbo].[sample_filetable] TO [MYDOMAIN\USER1];
GRANT VIEW DEFINITION ON OBJECT::[dbo].[sample_filetable] TO [MYDOMAIN\USER1];