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)。 但请注意:
虽然“图像”数据types的结尾仍然没有确定,但是应该使用“未来”certificate。
但是你必须问自己:为什么把BLOBS存储在一个列中?