实现SQL Server 2008中的文件流功能(上)

日期: 2009-06-23 作者:Robert Sheldon翻译:张峰 来源:TechTarget中国 英文

SQL Server 2008中最新的文件流功能使得你可以配制一个数据类型为varbinary(max)的列,以便将实际数据存储在文件系统中,而非在数据库中。只要愿意,你仍可以作为一个常规的二进制列来查询此列,即使数据自身存储在外部。   文件流特性通过将二进制大字段数据存储在本地文件系统中,从而将Windows新技术文件系统(NTFS)和SQL Server数据库引擎集成在一起。你可以使用Transact-SQL语句来查询、插入或更新数据,或者使用Win32文件系统界面来直接访问数据。

  微软建议你仅在以下几种情况下使用文件流:(1)你的二进制大字段数据文件平均大于1M,(2)你需要快速读……

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

SQL Server 2008中最新的文件流功能使得你可以配制一个数据类型为varbinary(max)的列,以便将实际数据存储在文件系统中,而非在数据库中。只要愿意,你仍可以作为一个常规的二进制列来查询此列,即使数据自身存储在外部。

  文件流特性通过将二进制大字段数据存储在本地文件系统中,从而将Windows新技术文件系统(NTFS)和SQL Server数据库引擎集成在一起。你可以使用Transact-SQL语句来查询、插入或更新数据,或者使用Win32文件系统界面来直接访问数据。

  微软建议你仅在以下几种情况下使用文件流:(1)你的二进制大字段数据文件平均大于1M,(2)你需要快速读取此数据,(3)你的应用程序使用中间列来处理应用逻辑。否则,你应该使用常规的varbinary(max)列。

  要激活SQL Server 2008服务中的文件流支持,需要遵照以下几步:

  1、配制数据库来支持文件流存储。

  2、定义支持文件流存储的列。

  3、启动SQL Server服务中的文件流支持

  要激活SQL Server 2008中指定实例的文件流支持,你必须首先配制此实例的SQL Server服务。在SQL Server配制管理器中,打开服务属性并选择“文件流”页签,如图所示。

  你至少需要选上“启动Transact-SQL文件流访问”勾选框。因为插入及更新数据最有效的方法是通过Win32界面,然而,你也需要激活服务来支持文件流(如果有必要,也可以启动允许远程客户端访问文件流数据)。

  在你激活了SQL Server服务中的文件流支持后,必须设置文件流访问级别,你可以在SQL Server管理器中设置。要设置访问级别,需执行以下T-SQL语句:

  EXEC sp_configure filestream_access_level, 2
  GO
  RECONFIGURE
  GO

  在这里,我使用系统存储过程sp_configure将访问级别设为2,这个级别可同时支持T-SQL和Win32流访问。如果我想只是支持T-SQL访问,则需要将访问级别设为1。如果设置为0,将会禁用SQL Server实例的文件流支持。在你运行存储过程后,需要运行RECONFIGURE命令来应用新的选项设置。

  配制数据库来支持文件流存储

  支持文件流存储的下一步操作是向数据库定义中添加一个文件流文件组。文件流文件组是一个特殊的文件组类型,它包含文件系统目录(数据容器)。例如,在下边的数据库定义中,我创建了一个名为FileStreamGrp的文件流文件组。

   USE master
  GO
  IF EXISTS
  SELECT name FROM sys.databases
  WHERE name = 'HumanResources')
  DROP DATABASE HumanResources
  GO
  CREATE DATABASE HumanResources
  ON
  PRIMARY(
  NAME = HumanRscsDat,
  FILENAME = 'C:DataHRHumanRscsDat.mdf'),
  FILEGROUP FileStreamGrp CONTAINS FILESTREAM(
  NAME = HumanRscsFs,
  FILENAME = 'C:DataHRFileStream')
  LOG ON(
  NAME = HumanRscsLog,
  FILENAME = 'C:DataHRHumanRscsLof.ldf')

翻译

张峰
张峰

相关推荐