龙岗做网站公司szaow,网站栏目相关内容在哪采集啊,,企业网站脚本语言,wordpress主题的使用在SQL Server 2008中#xff0c;新的FILESTREAM#xff08;文件流#xff09;特性和varbinary列配合#xff0c;你可以在服务器的文件系统上存储真实的数据#xff0c;但可以在数据库上下文内管理和访问#xff0c;这个特性让SQL Server不仅可以维护好数据库内记录的完整…在SQL Server 2008中新的FILESTREAM文件流特性和varbinary列配合你可以在服务器的文件系统上存储真实的数据但可以在数据库上下文内管理和访问这个特性让SQL Server不仅可以维护好数据库内记录的完整性也能够维护好数据库记录和外部文件之间的完整性。因为这个特性是在现有的varbinary(max)数据类型之上实现的开发人员可以轻易地用上这个特性不用对应用程序的架构进行改动。 FILESTREAM使SQL Server数据库引擎和NTFS文件系统成为了一个整体。Transact-SQL语句可以插入、更新、查询、搜索和备份FILESTREAM数据。FILESTREAM使用NT系统缓存来缓存文件数据。这有助于减少FILESTREAM数据可能对数据库引擎性能产生的任何影响。由于没有使用SQL Server缓冲池因此该内存可用于查询处理。 在SQL Server中BLOB可以是将数据存储在表中的标准varbinary(max)数据也可以是将数据存储在文件系统中的FILESTREAM varbinary(max)对象。数据的大小和应用情况决定您应该使用数据库存储还是文件系统存储。如果满足以下条件则应考虑使用FILESTREAM 所存储的对象平均大于1MB。 快速读取访问很重要。 您开发的是使用中间层作为应用程序逻辑的应用程序。 对于较小的对象将varbinary(max)BLOB存储在数据库中通常会提供更为优异的流性能。 FILESTREAM存储以varbinary(max)列的形式实现在该列中数据以BLOB的形式存储在文件系统中。BLOB的大小仅受文件系统容量大小的限制。文件大小为2GB的varbinary(max)标准限制不适用于存储在文件系统中的BLOB。 若要将指定列使用FILESTREAM存储在文件系统中对varbinary(max)列指定FILESTREAM属性。这样数据库引擎会将该列的所有数据存储在文件系统而不是数据库文件中。 FILESTREAM数据必须存储在FILESTREAM文件组中。FILESTREAM文件组是包含文件系统目录而非文件本身的专用文件组。这些文件系统目录称为“数据容器”。数据容器是数据库引擎存储与文件系统存储之间的接口。 使用FILESTREAM存储时需要注意以下内容 如果表包含FILESTREAM列则每一行都必须具有唯一的行ID。 不能嵌套FILESTREAM数据容器。 使用故障转移群集时FILESTREAM文件组必须位于共享磁盘资源上。 FILESTREAM文件组可位于压缩卷上。 启用FILESTREAM文件流 默认情况下FILESTREAM文件流特性是被禁用了的因此在使用之前你必须按照下面的步骤配置服务器和数据库实例 1、要启用服务器实例上的FILESTREAM文件流打开SQL Server配置管理器在SQL Server服务上点击右键然后点击打开你会看到一串服务器在你想要启用FILESTREAM文件流的SQL Server实例上点击右键从右键菜单中选择“属性”切换到FILESTREAM文件流标签检查“为Transact-SQL访问启用FILESTREAM文件流”选项你也可以在这个标签页为文件I/O流访问启用FILESTREAM文件流。 2、要为数据库实例启用FILESTREAM文件流执行系统存储过程sp_configure并设置filestream_access_level参数的值为2如下 EXEC sp_configure filestream_access_level, 2 GO RECONFIGURE GO filestream_access_level参数有效的值包括 ◆ 0 在该实例上禁用FILESTREAM文件流这是默认值。 ◆ 1 为Transact-SQL访问启用FILESTREAM文件流 ◆ 2 为Transact-SQL和Win32流访问启用FILESTREAM文件流 完成服务器和数据库实例配置后接下来是创建存储数据的真实数据库因为FILESTREAM文件流是专门为存储在文件系统上的二进制数据创建的 3、打开SSMS连接到数据库实例右击数据库实例选择“属性”选项系统将打开SQL Server实例的属性窗口。 4、切换的“高级”选项页在文件流访问级别下拉列表框中选择“已启用完全访问”选项如图所示。 5、单击“确定”按钮然后重启数据库实例FILESTREAM在数据库实例中设置完成。 在启用了数据库实例的FILESTREAM后接下来就需要设置数据库的FILESTREAM和创建具有FILESTREAM数据列的表 6、对应新建的数据库则在创建数据库时创建FILESTREAM文件组如果是现有数据库则使用ALTER DATABASE添加FILESTREAM的文件组例如对TestDB1数据库添加FILESTREAM的文件组具体SQL脚本如代码 ALTER DATABASE [sq_shuntcn] ADD FILEGROUP [FileStreamGroup] CONTAINS FILESTREAM --添加FILESTREAM文件组 GO ALTER DATABASE [sq_shuntcn] ADD FILE ( NAME NFileStream, FILENAME NC:\FileStream) --添加FILESTREAM文件 TO FILEGROUP [FileStreamGroup] GO 系统将自动创建C:\FileStream文件夹并在其中写入filestream.hdr文件该文件是 FILESTREAM容器的头文件不能删除一定要确保在运行该语句之前C:\FileStream并不存在。 7、创建了FILESTREAM文件组后便可创建和修改表指定某varbinary(max)类型的列包含FILESTREAM数据。例如创建Files表该表包含FileID和FIleContent列具体脚本如代码 CREATE TABLE PhotoAlbum( PhotoId int PRIMARY KEY, RowId uniqueidentifier ROWGUIDCOL NOT NULL UNIQUE DEFAULT NEWID(), Description varchar(max), Photo varbinary(max) FILESTREAM DEFAULT(0x) ) 按照msdn说明,RowId 列是一个ROWGUIDCOL列,Photo 作为文件存储的列不仅是VARBINARY(MAX)类型 ,同时还需要赋予一个fileStream特性 在创建好FILESTREAM表后即可向其中添加、修改和读取数据。SQL Server支持使用T-SQL和WIN32 API两种方式访问FILESTREAM。 对于T-SQL访问FILESTREAM数据列来说FILESTREAM是完全透明的也就是说T-SQL仍然使用一般的访问varbinary(max)数据列的方式访问并不会因为是FILESTREAM列而有所不同。 代码访问FILESTREAM数据列参考文章 Using SqlFileStream with C# to Access SQL Server FILESTREAM Data