首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >FILESTREAM -读取和写入FILESTREAM列中的大文件

FILESTREAM -读取和写入FILESTREAM列中的大文件
EN

Stack Overflow用户
提问于 2017-12-31 20:24:19
回答 1查看 429关注 0票数 1

我应该使用System.Data.SqlTypes.SqlFileStream来读写FILESTREAM列吗?

例如:

代码语言:javascript
复制
var sqlCommand = sqlConnection3.CreateCommand();
sqlCommand.CommandText = "Select FileData.PathName() As Path, GET_FILESTREAM_TRANSACTION_CONTEXT() As TransactionContext From PictureTable Where PkId = (Select Max(PkId) From PictureTable)"; 

var reader = sqlCommand.ExecuteReader();
reader.Read();
var filePath = (string)reader["Path"];
var transactionContext = (byte[])reader["TransactionContext"];
var sqlFileStream = new SqlFileStream(filePath, transactionContext, FileAccess.Read);
var data = new byte[sqlFileStream.Length];
sqlFileStream.Read(data, 0, Convert.ToInt16(sqlFileStream.Length));

在上面的代码中,我可以使用这里显示的查询并直接访问FileData

代码语言:javascript
复制
Select FileData From PictureTable Where PkId = (Select Max(PkId) From PictureTable)

如果不使用SqlFileStream而使用varbinary(max)读写会发生什么?

当SQL server和应用程序安装在不同的服务器上时,我在设置Windows身份验证以访问SqlFileStream文件路径时遇到一些问题。我怎样才能避免这个问题?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-12-31 21:22:41

根据微软的文档,SqlFileStream是合适的解决方案(参见here)。由于存储在文件流中的数据与存储在基于行的数据文件(参见here)中的数据不同,因此SqlFileStream处理其他事情(如文件句柄)。

希望这能有所帮助!

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48042400

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档