VarBinary与Image SQL Server数据类型存储二进制数据?

Yoa*_*. B 87 sql-server

我需要将二进制文件存储到SQL Server数据库.Varbinary和Image中哪种数据类型更好?

cms*_*sjr 136

由于不推荐使用image,因此应使用varbinary.

每个微软 (感谢链接@Christopher)

将来的Microsoft SQL Server版本中将删除ntext,text和image数据类型.避免在新的开发工作中使用这些数据类型,并计划修改当前使用它们的应用程序.请改用nvarchar(max),varchar(max)和varbinary(max).

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

  • http://msdn.microsoft.com/en-us/library/ms187993.aspx是一个更好的链接. (11认同)
  • @Ehsan我只能假设您不熟悉弃用术语.通常,当你说某些东西被弃用时,你说它不应该被使用,因为它将来会被删除.所以我的帖子和你在评论中发表的报价基本上是一回事. (4认同)
  • 我会坦率地告诉你,我不愿意进行编辑,因为你以一种攻击性和威胁性的语调接近它.也许你的意图不是粗鲁,但似乎你对我这么说.粗鲁往往会导致人们忽视其他好的想法.我按照你的建议改进了内容,但我也要求你考虑如何提出你的建议. (2认同)

SQL*_*ace 13

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


And*_*ngs 9

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


Ber*_*ard 6

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)字节的可变长度二进制数据.仍支持使用image数据类型,但要注意:

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个字节.存储大小是输入数据的实际长度+ 2个字节.输入的数据长度可以是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服务器

虽然"image"数据类型的结尾仍未确定,但您应使用"future"证明等效项.

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

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