VARBINARY(MAX)和IMAGE数据类型之间有很大的技术差异吗?

时间:2010-11-06 13:34:31

标签: image sql-server-2008 ado.net varbinary

我在互联网上阅读有关 SQL Server 数据类型的声明:

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

  2. IMAGE - 带有的二进制字符串 可变长度可达2 ^ 31-1 (2,147,483,647)字节。

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

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

4 个答案:

答案 0 :(得分:19)

他们存储相同的数据:这就是它的存在。

image”已弃用,并且具有一组有限的功能和操作。 varbinary(max)可以像varbinary {textvarchar(max)一样进行操作。

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

来自SO的示例:OneTwo

答案 1 :(得分:7)

我认为技术上它们是相似的,但重要的是要注意the documentation中的以下内容:

  

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

     

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

答案 2 :(得分:4)

  

他们存储相同的数据:这就是它的存在。

     

“image”已弃用且功能和操作有限   与之合作。 varbinary(max)可以更短的操作   varbinary(ditto for text and varchar(max))。

     

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

实际上,VARBINARY可以存储任何可以转换为字节数组的数据,例如文件,这与IMAGE数据类型使用的过程相同,因此,在视图中,两种数据类型都可以存储相同的数据。 但是VARBINARY具有size属性,而IMAGE接受任何大小到数据类型限制,因此在使用IMAGE数据类型时,您将花费更多资源来存储相同的数据。 在Microsoft®SQLServer®中,IMAGE数据类型确实已弃用,您必须在VARBINARY数据类型中下注。

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

答案 3 :(得分:0)

我无意中发现了他们之间的一个区别。您可以将字符串插入图像类型,但不能插入varbinary。也许这就是为什么MS贬低图像类型的原因,因为设置带有字符串的图像真的没有意义。