我需要将二进制文件存储到SQL Server数据库中。Varbinary和Image中哪种数据类型更好?
Answers:
由于不建议使用图像,因此应使用varbinary。
每个Microsoft (感谢链接@Christopher)
在将来的Microsoft SQL Server版本中,将删除ntext,text和image数据类型。避免在新的开发工作中使用这些数据类型,并计划修改当前使用它们的应用程序。请改用nvarchar(max),varchar(max)和varbinary(max)。
固定长度和可变长度的数据类型,用于存储大型非Unicode和Unicode字符以及二进制数据。Unicode数据使用UNICODE UCS-2字符集。
FileStream
在SQL Server 2008中还引入了一些小技巧。
FileStream
仅是一种存储行为。通过使用varbinary(max)
SQL Server实例并对其进行更改来实现Filestream 。
https://docs.microsoft.com/zh-cn/sql/t-sql/data-types/ntext-text-and-image-transact-sql
图片
从0到2 ^ 31-1(2,147,483,647)字节的可变长度二进制数据。仍然支持使用图像数据类型,但是请注意:
https://docs.microsoft.com/zh-cn/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)。但要注意:
尽管仍不确定“图像”数据类型的末尾,但应使用“未来”证明等效项。
但是您必须问自己:为什么将BLOBS存储在列中?