我必须扩展现有的.net-Application,以便在SQL Server 2005数据库中存储图像和文档(主要是pdf)。
哪种SQL Server数据类型最适合用于保存这些文件,创建一个包含字段的单独表是否有意义,或者将这些字段直接放在“普通”业务表中是没有问题的,只要select语句不选择它们(或SELECT *)。
答案 0 :(得分:7)
SQL Server 2005: Blob varchar(max)
SQL Server 2008:FileStream
答案 1 :(得分:6)
VARBINARY或FILESTREAM
无需将它们存储在单独的表中 - 您可以使用内置控件强制使用sp_tableoption将其存储在行中/行外:
http://msdn.microsoft.com/en-us/library/ms189087.aspx
http://msdn.microsoft.com/en-us/library/ms186981.aspx
http://www.microsoft.com/sqlserver/2008/en/us/wp-sql-2008-manage-unstructured.aspx
(请注意,如果您使用不同的文件组并单独备份它们或类似的东西,那么存储在单独的表中可能会有好处 - 但这可能被视为例外)
答案 2 :(得分:3)
使用varbinary(max)在sql server中存储图像和文档。我建议将它们放在一个单独的表中,而不是主表。
答案 3 :(得分:1)
要回答问题的其他部分,如果要将二进制数据存储在数据库中,请不要将表中的数据与其他字段混合。您可能不会对二进制数据进行任何搜索或索引,并且对表的大小将减慢对任何元数据的访问速度。将图像/文件保存在单独的表中。
虽然我可以想出将文件保存在SQL Server数据库中的充分理由(例如:不是Web应用程序),但@JonH也说:除非你有令人信服的理由,否则请将它们保存在文件系统中。