16

我在互联网上阅读了这些关于SQL Server数据类型的陈述:

  1. VARBINARY(MAX)- 可变长度的二进制字符串最多可以存储 2^31-1 个字节。

  2. IMAGE- 长度可变的二进制字符串,最大为 2^31-1 (2,147,483,647) 个字节。

VARBINARY(MAX)IMAGE数据类型之间是否存在很大的技术差异?

如果有区别:我们是否必须自定义 ADO.NET 如何在 SQL Server 中插入和更新图像数据字段?

4

4 回答 4

20

它们存储相同的数据:就目前而言。

" image" 已被弃用,并且有一组有限的功能和操作可以使用它。varbinary(max)可以像更短一样操作(和varbinary同上)。textvarchar(max)

不要image用于任何新项目:只需在此处搜索人们遇到的问题imagetext数据类型,因为功能有限。

SO中的例子:

于 2010-11-06T14:08:33.000 回答
7

我认为从技术上讲它们是相似的,但重要的是要注意文档中的以下内容

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

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

于 2010-11-06T13:39:21.353 回答
4

它们存储相同的数据:就目前而言。

“图像”已被弃用,并且具有一组有限的功能和操作。varbinary(max) 可以像更短的 varbinary 一样操作(文本和 varchar(max) 同上)。

不要将图像用于任何新项目:只需在此处搜索人们对图像和文本数据类型的问题,因为功能有限。

实际上,VARBINARY可以存储任何可以转换为字节数组的数据,例如文件,而这与IMAGE数据类型使用的过程相同,因此,从这个角度来看,两种数据类型都可以存储相同的数据。但是VARBINARY有一个 size 属性,同时IMAGE接受任何大小到数据类型限制,所以当使用IMAGE数据类型时,你会花费更多的资源来存储相同的数据。在Microsoft® SQL Server®中,IMAGE数据类型确实已被弃用,那么您必须押注VARBINARY数据类型。

但要小心:Microsoft® SQL Server® CE®(包括最新的 4.0 版本)仍在使用IMAGE数据类型,并且可能这种数据类型不会这么快“消失”,因为在精简版版本中,这种数据类型比任何其他数据类型都好快速文件存储。

于 2012-02-27T21:08:52.840 回答
0

我无意中发现了它们之间的一个区别。您可以将字符串插入图像类型,但不能插入 varbinary。也许这就是 MS 不推荐使用图像类型的原因,因为用字符串设置图像确实没有意义。

于 2013-04-11T13:30:32.050 回答