Sqlserver2008 2012配置文件流数据库FileStream
发布时间:2020-12-12 13:18:43 所属栏目:MsSql教程 来源:网络整理
导读:SQL Server 2008推出了一个新的特性叫做文件流(FILESTREAM),它使得基于 SQL Server的应用程序可以在文件系统中存储非结构化的数据,例如文档、图片、音频、视频等等。文件流主要将 SQL Server数据库引擎和新技术文件系统(NTFS)集成在一起; 它主要以varbinar
SQL Server 2008推出了一个新的特性叫做文件流(FILESTREAM),它使得基于
SQL Server的应用程序可以在文件系统中存储非结构化的数据,例如文档、图片、音频、视频等等。文件流主要将
SQL Server数据库引擎和新技术文件系统(NTFS)集成在一起; 它主要以varbinary(max)数据类型存储数据。使用这个数据类型,非结构化数据存储在NTFS文件系统中,而
SQL Server数据库引擎管理文件流字段和存储在NTFS的实际文件。使用TSQL语句,用户可以插入、更新、删除和选择存储在可用文件流的数据表中的数据。
在 SQL Server 2008安装过程中配置和激活文件流 SQL Server数据库管理员可以在 SQL Server 2008安装过程中激活文件流特性。激活文件流的选项在 SQL Server 2008建立过程中在 数据库引擎配置界面中可以看到。为了激活文件流用于Transact- SQL 访问,数据库管理员需要选择Enable FILESTREAM for Transact- SQL access选项。一旦这个选项激活了,那么其他所有访问控制选项都可以配置了。选择Enable FILESTREAM for file I/O streaming access选项来开启用于文件的Win32流访问。然后你需要提供文件流数据用于访问所存储的 windows共享名称。如果你计划允许远程客户端访问 服务器上的这个文件流数据,那么选择Allow remote clients to have streaming access to FILESTREAM data控制。在下面的截图里,我们激活了文件流并提供了一个用于允许文件I/O流访问的windows共享名称。 在 SQL Server 2008安装过程中,如果你忘记了激活文件流特性,那么这个特性可以在安装之后通过下面的方法来激活。 使用 SQL Server配置管理器来配置和激活文件流 1. 点击开始菜单| Microsoft SQL Server 2008 |配置工具| SQL Server配置管理器。 2. 在左边面板中,点击 SQL Server 服务,它将在右边面板中列出所有 SQL Server 2008相关服务。 3. 点击你想在其上激活文件流的 SQL Server(MSSQLSERVER)服务实例; 并右键单击来查看这个服务的属性。 4. 在 SQL Server 属性对话框中,点击FILESTREAM标签页。 5. 选择FILESTREAM for Transact- SQL access 复选框,它将激活其余选项。 6. 如果你想提供从 windows读和写文件流数据访问那么选择Enable FILESTREAM for I/O streaming access选项并输入windows 共享的名称。 7. 最后一个选项,Allow remote clients to have streaming access to FILESTREAM data将允许远程客户端访问这个 服务器上的文件流数据。 8. 点击Apply来保存这些改变。 使用TSQL 查询来配置和激活文件流 1. 在 SQL Server 管理套件中,点击新查询窗口并输入下面的TSQL查询: Use Master Go EXEC sp_c onfigure 'filestream access level',2 Go RECONFIGURE Go SQL Server 2008支持3种级别的文件流访问。 a. 如果这个值是0,那么对于这个实例来说文件流支持是不可用的。 b. 如果这个值是1,那么对于Transact- SQL访问来说文件流是激活的。 c. 如果这个值是2,那么对于Transact- SQL和Win32流访问来说文件流是激活的。 使用GUI在服务器实例级别配置和激活文件流 1. 使用 SQL Server 管理套件连接到 SQL Server 2008。 2. 在对象管理器中,右键单击服务器并选择属性来查看 服务器属性窗口。 3. 在Advanced下面,点击Filestream Access Level 后面的下拉列表框并选择Full access enabled。 4. 为此用户需要是sysadmin或 serveradmin固定服务器角色的成员来改变文件流的默认设置。 5. 点击OK来保存变更。 怎样创建一个文件流 数据库 当你创建数据库时,文件流特性使用一个特殊的文件组类型。你需要在创建数据库语句中至少为一个文件组指定CONTAINS FILESTREAM 条件从句。 Use Master Go IF EXISTS (SELECT name FROM sys.databases WHERE name = N'FileStreamDB') DROP DATABASE FileStreamDB GO USE Master GO CREATE DATABASE FileStreamDB ON PRIMARY ( NAME = FileStreamDB_Data, FILENAME = N'D:FileStreamFileStreamDB_Data.mdf', SIZE = 10MB, MAXSIZE = 50MB, FILEGROWTH = 15%), FILEGROUP MyDBData ( NAME = MyFileStream_Data, FILENAME = N'D:FileStreamFileStreamDB_Data.ndf', FILEGROWTH = 5MB), FILEGROUP FileStream CONTAINS FILESTREAM ( NAME = FileStream, FILENAME = N'D:FileStreamFileStreamData') LOG ON ( NAME = 'FileStreamDB_Log', FILENAME = N'D:FileStreamFileStreamDB_Log.ldf', SIZE = 5MB, MAXSIZE = 25MB, FILEGROWTH = 5MB); GO 下面的图片显示了FileStreamDB 数据库的属性,这个数据库是通过执行上面的语句来创建的。 下面的截屏显示了在D:FileStream folder下为FileStreamDB 数据库创建的文件。你将看到一个叫做FileStreamData的文件夹,它将存储所有的varbinary(max)值。 在D:FileStreamFileStreamData文件夹里你将看到一个叫做$FSLOG的子文件夹和一个叫做filestream.hdr的文件,这个文件是一个用于文件流容器的头文件。 怎样创建一个数据表来存储文件流数据 如果一个表需要存储文件流数据,那么这个表应该定义一个ROWGUIDCOL字段。这是用于存储引擎跟踪NTFS文件系统中的实例用的。这个字段将用来存储文件流数据,它应该有varbinary(max)数据类型和FILESTREAM属性。在 SQL Server 2008中,varbinary(max)数据类型可以存储超过2GB的数据。下面的TSQL查询可以用来创建FileStreamTable表: USE FileStreamDB Go CREATE TABLE dbo.FileStreamTable ( FS_ID UNIQUEIDENTIFIER ROWGUIDCOL NOT NULL UNIQUE, FSData VARBINARY(MAX) FILESTREAM ); 怎样插入数据到FileStreamTable中 执行下面的TSQL来插入文件流数据到FileStreamDB数据库中的FileStreamTable表中。 USE FileStreamDB Go INSERT INTO FileStreamTable VALUES(newid(),CAST ('Inserting data into FileStreamTable........' As VARBINARY(MAX))) Go 如果这个数据成功插入了,那么你将看到在:FileStreamFileStreamData文件夹下创建了一个新的文件夹。 文件流的优点 BLOB数据现在可以保存在NTFS系统中,并且它处于 SQL Server 2008的控制之下。 SQL Server将维护所有BLOB数据的事务一致性。 对于要以FILESTREAM来存储的文件没有规模限制。只要你在磁盘上具有空间,那么你就可以存储更大的FILESTREA (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |