VarBinary与图像SQL Server数据types存储二进制数据?

我需要将二进制文件存储到SQL Server数据库。 Varbinary和Image中哪个数据types更好?

由于图像已被弃用,你应该使用varbinary。

每微软 (谢谢链接@Christopher)

ntext,文本和图像数据types将在未来版本的Microsoft SQL Server中删除。 避免在新的开发工作中使用这些数据types,并计划修改当前正在使用它们的应用程序。 改用nvarchar(max),varchar(max)和varbinary(max)。

用于存储大型非Unicode和Unicode字符和二进制数据的固定和可变长度数据types。 Unicode数据使用UNICODE UCS-2字符集。

varbinary(max)是要走的路(在SQL Server 2005中引入)

在SQL Server 2008中引入了相当漂亮的FileStream

https://docs.microsoft.com/en-us/sql/t-sql/data-types/ntext-text-and-image-transact-sql

图片

从0到2 ^ 31-1(2,147,483,647)个字节的变长二进制数据。 仍然支持使用图像数据types,但要注意:

https://docs.microsoft.com/en-us/sql/t-sql/data-types/binary-and-varbinary-transact-sql

varbinary [(n | max)]

可变长度的二进制数据。 n可以是从1到8,000的值。 max表示最大存储容量为2 ^ 31-1字节。 存储大小是input数据的实际长度+ 2个字节。 input的数据可以是0字节的长度。 varbinary的ANSI SQL同义词是二元变化的。

所以两者的大小是相同的(2GB)。 但请注意:

https://docs.microsoft.com/en-us/sql/database-engine/deprecated-database-engine-features-in-sql-server-2016#features-not-supported-in-a-future-version-的-SQL服务器;

虽然“图像”数据types的结尾仍然没有确定,但是应该使用“未来”certificate。

但是你必须问自己:为什么把BLOBS存储在一个列中?

https://docs.microsoft.com/en-us/sql/relational-databases/blob/compare-options-for-storing-blobs-sql-server