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

时间:2009-01-14 18:12:08

标签: sql-server

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

4 个答案:

答案 0 :(得分:135)

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

Microsoft (感谢@Christopher链接)

  

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

     

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

答案 1 :(得分:13)

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

答案 2 :(得分:9)

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

答案 3 :(得分: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-of-sql-server

虽然“image”数据类型的结尾仍未确定,但您应该使用“future”证明等效。

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

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