2009-07-31 41 views
3

我们将文档存储在SQL Server 2005数据库表格中,格式为“Image”。在SQL Server 2005图像列中存储20 Meg文件的最有效方法

每次我尝试存储一个大于1兆字节的PDF文件时,它都会被破坏。

.NET中是否有任何特别有效的方法来将大文件(〜10megs)序列化并存储到数据库中?

[编辑] Microsoft实际上表示最大文件大小约为2G 从0到2^31-1(2,147,483,647)字节的可变长度二进制数据。 http://msdn.microsoft.com/en-us/library/ms187993.aspx

+1

可能腐败与你如何把它放入数据库并检索它有关? – 2009-07-31 14:30:47

+2

请显示您用于存储文件和检索它们的代码。另外,请告诉我们一些关于如何知道存在腐败的信息。你可以使用测试数据而不是文件重现腐败:如果你存储20MB的零,你能检索20MB的零。 – 2009-07-31 14:35:17

+0

有趣的是我的单元测试仍然通过。 我序列化文件,获取内容大小(字节长度)保存它,检索文件并比较字节,它们是相同的。但是,当我尝试查看检索到的文件时,它已损坏。 ...这只发生在大文件上。 – 2009-07-31 14:35:19

回答

8

将文件存储在文件系统中并将对文件的引用存储在数据库中是否更有意义?在数据库中存储20MB文件听起来像可能会导致一些性能问题。

3

遵循以文档为中心的方法,而不是在数据库中存储PDF和图像等文档,当您开始查看数据库的各种性能问题时,您最终必须重构它。只需将文件存储在文件系统中,并将路径放在数据库的表格中。

不过,你可能已经在处理这个问题,所以看看这篇文章。

http://chiragrdarji.wordpress.com/2007/08/31/storing-and-retrieving-docpdfxls-files-in-sql-server/

它解释说,varbinarary的最大极限是2的31个字节是什么,你可以在SQL Server 2005存储

2

对于SQL Server 2005中的大型二进制数据,您不应该使用VARBINARY(Max)吗?

相关问题