SQL ServerのFileTableはファイル自体は共有フォルダへ配置し、それがテーブルのレコードとして管理できる機能です。
ファイルパス指定で簡単にアクセスできるのが便利なのですが、ASP.NETを介してファイルパス指定を行う際、権限周りの設定で苦労したので備忘として記載します。
前提
ファイルパス指定でアクセスする場合の権限は、SQL Serverのユーザ権限に準じます。orangeleafさんの投稿に詳細は記載されています。
FileTableの共有フォルダーにアクセス権を付与する
はまったこと
Webアプリ(ここではASP.NET)を介してFileTableへアクセスする場合は、Webサーバのプロセスを実行しているユーザへ、SQL Serverでの権限がないとアクセスできません。
IISだと実行ユーザは、下記yuyadayoさんの投稿の通りデフォルトApplicationPoolIdentityの設定となっていてアプリケーションプールとなります。
クリスマスプレゼント もとい IIS
対応したこと(IISのケース)
プロセスのユーザをSQL Serverの権限があるWindowsユーザにすればよいのですが、わざわざFileTableのアクセスの為に実行ユーザを変えるのも微妙なので、アプリケーションプールに対してSQL Serverの権限を付与します。
下記のstackoverflowでの投稿の通り、権限設定でアプリケーションプール名を直書きすることで追加可能です。
Add IIS 7 AppPool Identities as SQL Server Logons