gpt4 book ai didi

sql - 如何使用 SqlFileStream 对 SQL Server 2012 FileTable 进行事务访问?

转载 作者:行者123 更新时间:2023-12-04 13:38:35 24 4
gpt4 key购买 nike

我正在尝试使用 WCF 服务中的 SqlFileStream 对象来获取 SQL Server 2012 FileTable 中特定文件的句柄。使用这段代码,我能够像您期望的那样获得路径和事务上下文,没有任何问题:

            using (SqlConnection con2 = new SqlConnection(ConfigurationManager.ConnectionStrings["FileStorage"].ConnectionString))
{
con2.Open();
string getFileHandleQuery = String.Format(
@"SELECT FileTableRootPath(), file_stream.GetFileNamespacePath(), GET_FILESTREAM_TRANSACTION_CONTEXT()
FROM {0}
WHERE stream_id = @streamId", "FSStore");

byte[] serverTransactionContext;
string serverPath;
using (SqlCommand sqlCommand = new SqlCommand(getFileHandleQuery, con2))
{
sqlCommand.Parameters.Add("@streamId", SqlDbType.UniqueIdentifier).Value = new Guid(finalFileHandleStreamId);

using (SqlDataReader sqlDataReader = sqlCommand.ExecuteReader())
{
sqlDataReader.Read();
serverPath = String.Concat(sqlDataReader.GetSqlString(0).Value, sqlDataReader.GetSqlString(1).Value);
serverTransactionContext = sqlDataReader.GetSqlBinary(2).Value;
sqlDataReader.Close();
}
}
con2.Close();
}

但是,一旦我尝试并实际使用路径和事务上下文来创建新的 SqlFileStream:

using (SqlFileStream dest =
new SqlFileStream(serverPath, serverTxn, FileAccess.Write))
{
...
}

上面的内容有以下异常:挂载的文件系统不支持扩展属性。

有人可以向我解释我在这里做错了什么吗?

谢谢!

最佳答案

如果您尝试使用 FileTable 并在新建 SqlFileStream 对象时收到错误,请检查 filePath 值。

SqlFileStream sfs = new SqlFileStream(filePath, objContext, System.IO.FileAccess.Read); <-- Error "The mounted file system does not support extended attributes" 

正确获取filePath值的方法是

SELECT [file_stream].PathName() FROM dbo.fTable WHERE name = 'test.xlsx'

filePath 值应该如下所示:

\\HOSTNAME\MSSQLSERVER\v02-A60EC2F8-2B24-11DF-9CC3-AF2E56D89593\test\dbo\fTable\file_stream\A654465D-1D9F-E311-B680-00155D98CA00\VolumeHint-HarddiskVolume1

不喜欢:

\\HOSTNAME\MSSQLSERVER\Store\fDirectory\test.xlsx

这是设计要求。请参阅 https://connect.microsoft.com/SQLServer/feedback/details/729273/sql-server-denali-filetable-access-using-sqlfilestream-returns-error-the-mounted-file-system-does-not-support-extended-attributes

和使用 OpenSqlFilestream 访问 FILESTREAM 数据 http://technet.microsoft.com/en-us/library/bb933972.aspx

关于sql - 如何使用 SqlFileStream 对 SQL Server 2012 FileTable 进行事务访问?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16326177/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com