有効にして実行SQL Server 2012
しています。FILESTREAM
読み取り専用権限 ( ) を持つユーザーとしてログオンしdb_datareader
、次のコードを正常に実行しました。filePath
とは、filestream オプションを使用して SQL Server 2008 にファイルを保存するでtransactionContext
説明されているように取得されます。
using (var transaction = new TransactionScope())
{
// filePath and transactionContext are obtained as described here:
// https://stackoverflow.com/questions/6463343/storing-files-in-sql-server-2008-using-the-filestream-option
using (var stream = new SqlFileStream(filePath, transactionContext, FileAccess.Write, FileOptions.SequentialScan, 0))
{
var b = System.Text.Encoding.Unicode.GetBytes("OVERWRITE");
stream.Write(b, 0, b.Length);
}
}
パフォーマンス上の理由から使用したいのですが、ユーザーがファイルを変更SqlFileStream
できるようにしたくありません。ファイルの追加は、ストアド プロシージャを介して可能です。これは問題ありません。ただし、その時点から、ファイルは読み取り専用と見なされます。db_datareader
FILESTREAM データを読み取り専用にするにはどうすればよいですか?
つまり、書き込みアクセスでファイルを開くことを禁止したい!