WEB开发网
开发学院数据库MSSQL Server SQL Server:存储图像和BLOB文件(二) 阅读

SQL Server:存储图像和BLOB文件(二)

 2008-04-14 09:54:28 来源:WEB开发网   
核心提示:在本系列的第一篇文章中,我们讨论了二进制和BLOB(二进制大型对象)的定义,SQL Server:存储图像和BLOB文件(二),以及在什么情况下应当将这些对象存储在SQL Server里,将图像和二进制数据存储在SQL Server内部的原因包括方便安全性管理、客户访问之便和事务控制,找一张小图片,并执行下面的T-SQ

在本系列的第一篇文章中,我们讨论了二进制和BLOB(二进制大型对象)的定义,以及在什么情况下应当将这些对象存储在SQL Server里。将图像和二进制数据存储在SQL Server内部的原因包括方便安全性管理、客户访问之便和事务控制。本文将着眼于varBinary(MAX)数据类型,在SQL Server 2005和2008中都有这种数据类型,其扩展说明符(MAX)意味着不设置文件大小的上限。“var”指文件大小是可变,不像标准二进制数据类型那样是个固定值。在SQL Server的联机丛书提供了三种二进制数据类型的使用条件说明:当表列的所有输入数据大小为固定值(且长度小于8000字节)时,使用标准二进制Binary数据类型;当表列的输入数据长度有很大差别(且长度均小于8000字节)时,使用varBinary数据类型;当表列输入数据长度超过8000字节时,使用varBinary(max) 数据类型。对于SQL Server 2000,则使用图像(Image)数据类型。不过请记住,微软已经声明图像数据类型是为了向下兼容才保留下来的,而且可能会在未来的版本中停止使用。

例表

首先,我们要创建一个测试数据库和表来装载我们的图片。使用以下的T-SQL语句:

  USEmaster;
  GO
  CREATEDATABASETest;
  GO
  USETest;
  GO
  CREATETABLEBLOBTest
  (
  TestIDintIDENTITY(1,1),
  BLOBNamevarChar(50),
  BLOBDatavarBinary(MAX)
  );

在本例中,列的名称为 BLOBData,不过您可以使用任何标准的SQL名称为列命名。二进制数据类型对命名没有任何限制。

如果您运行的是SQL Server 2005和2008,找一张小图片,并执行下面的T-SQL语句插入该图像来测试数据库。该语句在SQL Server 2000中无效,因为只有varBinary(MAX)数据类型才能成为插入目标:

1 2 3  下一页

Tags:SQL Server 存储

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接