4

SQL Server 2012FILESTREAM启用的情况下运行。以具有只读权限的用户身份登录 ( db_datareader) 我成功运行了以下代码。filePath和是通过使用 filestream 选项在 sql server 2008transactionContext中存储文件中的描述获得的。

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 数据设为只读?

即我想禁止以写访问权限打开文件!

4

2 回答 2

3

SqlFileStreamFileStream在引擎盖下使用正常,所以基本上,你已经脱离了 SQL 安全上下文。您正在使用 NTFS 文件权限。

最简单的解决方案是对 SQL 服务器使用Windows 身份验证,并将相同的 Windows 帐户放在 SQL 的 db_datareader 组中,并为其提供对 UNC 共享的只读权限。

于 2013-03-20T11:16:55.977 回答
0

编写包装器而不实现方法Write()

于 2013-02-21T11:48:55.957 回答