我必须扩展一个现有的.NET应用程序,将图像和文档(大多数为pdf文件)存储在SQL Server 2005数据库中。
哪种SQL Server数据类型最适合保存这些文件?是否有意义创建一个单独的表来保存这些字段,或者把这些字段直接放在“正常”的业务表中,只要选择语句不选择它们(或SELECT *)就没有问题?
我必须扩展一个现有的.NET应用程序,将图像和文档(大多数为pdf文件)存储在SQL Server 2005数据库中。
哪种SQL Server数据类型最适合保存这些文件?是否有意义创建一个单独的表来保存这些字段,或者把这些字段直接放在“正常”的业务表中,只要选择语句不选择它们(或SELECT *)就没有问题?
SQL Server 2005: Blobvarchar(max)
SQL Server 2008: FileStream
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
(请注意,如果您使用不同的文件组并独立对其进行备份等操作,则将其存储在单独的表中可能会带来好处,但这可能被认为是例外情况)
使用varbinary(max)在SQL Server中存储图像和文档。我建议将它们放在单独的表中,而不是主表中。
text
,ntext
和image
已被弃用,因此2005年的正确答案应该是(正如其他人正确指出的那样)varchar(MAX)
。 - Lucero