VARBINARY(MAX) 和 IMAGE 数据类型之间有很大的技术差异吗?
我在互联网上阅读了这些关于 SQL Server 数据类型的声明:
VARBINARY(MAX)
- 二进制字符串 具有可变长度可以存储 到 2^31-1 字节。IMAGE
- 带有 a 的二进制字符串 可变长度最大为 2^31-1 (2,147,483,647) 字节。
VARBINARY(MAX)
和 IMAGE
数据类型之间是否存在很大的技术差异?
如果有区别:我们是否必须自定义 ADO.NET 在 SQL Server 中插入和更新图像数据字段的方式?
I was reading on internet these statements about SQL Server data types:
VARBINARY(MAX)
- Binary strings
with a variable length can store up
to 2^31-1 bytes.IMAGE
- Binary strings with a
variable length up to 2^31-1
(2,147,483,647) bytes.
Is there a really big technical difference between VARBINARY(MAX)
and IMAGE
data types?
If there is a difference: do we have to customize how ADO.NET inserts and updates image data field in SQL Server?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
它们存储相同的数据:仅此而已。
“
image
”已被弃用,并且具有一组有限的与其配合使用的功能和操作。varbinary(max)
可以像较短的varbinary
一样进行操作(text
和varchar(max)
也是如此)。不要在任何新项目中使用
image
:只需在此处搜索人们因功能有限而使用image
和text
数据类型的问题。SO 的示例:一个、两个
They store the same data: this is as far as it goes.
"
image
" is deprecated and has a limited set of features and operations that work with it.varbinary(max)
can be operated on like shortervarbinary
(ditto fortext
andvarchar(max)
).Do not use
image
for any new project: just search here for the issues folk have withimage
andtext
datatypes because of the limited functionality.Examples from SO: One, Two
我认为从技术上讲它们是相似的,但重要的是要注意文档中的以下内容: :
I think that technically they are similar, but it is important to notice the following from the documentation:
事实上,VARBINARY可以存储任何可以转换为字节数组的数据,例如文件,这与IMAGE数据类型使用的过程相同,因此,通过从这个角度来看,这两种数据类型都可以存储相同的数据。
但是
VARBINARY
有一个大小属性,而IMAGE
接受不超过数据类型限制的任何大小,因此当使用IMAGE
数据类型时,您将花费更多的资源来存储相同的数据。在 Microsoft® SQL Server® 中,
IMAGE
数据类型确实已被弃用,因此您必须使用VARBINARY
数据类型。但要小心:Microsoft® SQL Server® CE®(包括最新的 4.0 版本)仍然使用
IMAGE
数据类型,并且这种数据类型可能不会这么快“消失” ,因为在 Compact Edition 版本中,这种数据类型比任何其他数据类型都更能快速存储文件。In fact,
VARBINARY
can store any data that can be converted into a byte array, such as files, and this is the same process thatIMAGE
data type uses, so, by this point of view, both data types can store the same data.But
VARBINARY
have a size property, whileIMAGE
accepts any size up to the data type limits, so when usingIMAGE
data type, you will spend more resources to store the same data.In a Microsoft® SQL Server®, the
IMAGE
data type is really deprecated, then you must bet inVARBINARY
data type.But be carefull: The Microsoft® SQL Server® CE® (including the latest 4.0 version) still using
IMAGE
data type and probably this data type will not "disappears" so soon, because in Compact Edition versions, this data type is better than any other to fast files storage.我无意中发现了他们之间的一处区别。您可以将字符串插入图像类型,但不能插入 varbinary。也许这就是 MS 不推荐使用图像类型的原因,因为用字符串设置图像确实没有意义。
I inadvertently found one difference between them. You can insert a string into an image type but not into a varbinary. Maybe that's why MS is deprecating the image type as it really doesn't make sense to set an image with a string.