【问题标题】:Retrieving Sql FileStream files检索 Sql FileStream 文件
【发布时间】:2013-04-03 02:05:11
【问题描述】:

我们在 sql filestream db 中有超过 200gb 的数据。那么,有人可以建议我提取文件流文件的最佳和最快方法是什么?

我打算使用 C# 应用程序来提取文件(通过一个一个循环)。有没有其他可用的方法,或者你们知道如何使用 C# 快速提取文件吗?

提前致谢。

【问题讨论】:

  • 提取一次然后把它们放到别的地方?还是你的程序真的需要一个个一个一个地重复提取所有文件?
  • 是的,我们需要从数据库中一个一个地提取文件并将它们存储在一个文件夹中。 (实际上我们需要将所有提取的文件移动到amazon S3。)
  • 与您已有的慢速解决方案相比,您需要将代码快多少? (我假设您计划展示带有测量时间的示例代码,以便人们提出改进建议)
  • 现在我有正常的 c# 代码来从文件流中获取文件。 (这是每个人都在使用的通用代码)。

标签: c# sql-server-2008 filestream


【解决方案1】:

如果您要提取大量文件 - 在这种情况下听起来就像是这样 - 并且您可以访问 SQL 服务器计算机,您可以从磁盘上的文件夹中复制所有文件。

这取决于版本,但您可以在此处为 SQL Server 2008 找到它们:

C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA

这将包含所有以 GUID 命名的文件,您可以通过查看 C# 应用程序中的数据库表将其重命名为更具可读性的文件。

如果您无法访问 SQL 服务器计算机,那么远程读取它们并保存每个文件可能是您的最佳选择。只需确保您有足够的带宽并检查并行运行查询是否会提高速度。

查看此链接了解更多信息:

http://www.codeproject.com/Articles/128657/How-Do-I-Use-SQL-File-Stream

【讨论】:

  • 我不明白从磁盘上的文件夹中复制所有文件是什么意思。据我了解,sql 文件流文件已加密并存储在 sql server 中(如果我错了,请纠正我),我们需要使用一些程序/API 来检索文件(在我的情况下为 c#)。
  • 我不相信它们在本地磁盘上被加密。假设你有一些关于文件类型的信息,你应该能够像在 SQL 服务器机器上打开普通文件一样打开它们。
  • +1 如果您使用 FileStream 将文件保存在数据库中,这是可能的。数据库实际上什么也没做,只是创建了一个字典来维护这些文件,当然是在事务中维护它们。但是,如果你停止 SQL Server 服务,你可以像普通文件一样操作文件。
  • @ljh:好的。但是我们怎么知道哪个文件属于什么?我的意思是文件流文件夹中的文件似乎不同,并且没有任何扩展名,如 .pdf、.xls 等。如何识别相同的文件?
  • 我从 microsoft 站点“无法直接从 NTFS 文件系统打开存储在 FILESTREAM 列中的单个文件。流式 FILESTREAM 数据仅在 SQL Server 事务的上下文中有效。”看到这个msdn.microsoft.com/en-us/library/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-06-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-24
  • 1970-01-01
相关资源
最近更新 更多