【发布时间】:2017-04-10 14:46:25
【问题描述】:
我需要将二进制文件存储到 SQL Server 数据库。 Varbinary 和 Image 哪种数据类型更好?
【问题讨论】:
标签: sql-server
我需要将二进制文件存储到 SQL Server 数据库。 Varbinary 和 Image 哪种数据类型更好?
【问题讨论】:
标签: sql-server
由于图像已被弃用,您应该使用 varbinary。
每Microsoft (感谢@Christopher 的链接)
ntext 、 text 和 image 数据类型将在未来被移除 Microsoft SQL Server 的版本。避免在 new 中使用这些数据类型 开发工作,并计划修改当前使用的应用程序 他们。请改用 nvarchar(max)、varchar(max) 和 varbinary(max)。
用于存储大型非 Unicode 和 Unicode 字符和二进制数据。 Unicode 数据使用 UNICODE UCS-2 字符集。
【讨论】:
varbinary(max) 是可行的方法(在 SQL Server 2005 中引入)
【讨论】:
还有相当漂亮的FileStream,在 SQL Server 2008 中引入。
【讨论】:
FileStream 只是一种存储行为。 Filestream 是通过使用varbinary(max) 并更改您的 sql server 实例来实现的。
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) 的可变长度二进制数据 字节。仍然支持使用图像数据类型,但请注意:
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)。但请注意:
虽然“图像”数据类型的结尾仍未确定,但您应该使用“未来”证明等价物。
但您必须问自己:为什么将 BLOBS 存储在列中?
【讨论】: