c# – 防止对FILESTREAM进行写操作?

在启用FILESTREAM的情况下运行SQL Server 2012.以具有只读权限的用户身份登录(db_datareader)我成功运行了以下代码.如storing files in sql server 2008 using the filestream option中所述获得filePath和transactionContext.

using (var transaction = new TransactionScope())
{
    // filePath and transactionContext are obtained as described here:
    // https://*.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数据设为只读?

即我想禁止打开具有写访问权限的文件!

解决方法:

SqlFileStream使用普通的FileStream,所以基本上,你不在SQL安全上下文中.您正在使用NTFS文件权限.

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

上一篇:FIB统计信息文件fib_triestat


下一篇:c# – 二进制读写器同时打开?