欢迎投稿

今日深度:

SQL Server 2008新特性——FILESTREAM(1)(2)

5)单击“确定”按钮,然后重启数据库实例,FILESTREAM在数据库实例中设置完成。

在启用了数据库实例的FILESTREAM后,接下来就需要设置数据库的FILESTREAM和创建具有FILESTREAM数据列的表:

6)对应新建的数据库,则在创建数据库时创建FILESTREAM文件组,如果是现有数据库,则使用ALTER DATABASE添加FILESTREAM的文件组,例如对TestDB1数据库添加FILESTREAM的文件组,具体SQL脚本如代码:

ALTER DATABASE [TestDB1]
ADD FILEGROUP [FileStreamGroup] CONTAINS FILESTREAM --添加FILESTREAM文件组
GO

ALTER DATABASE [TestDB1]
ADD FILE ( NAME = N'FileStream', FILENAME = N'C:\FileStream) --添加FILESTREAM文件
TO FILEGROUP [FileStreamGroup]
GO

系统将自动创建C:\FileStream文件夹并在其中写入filestream.hdr文件,该文件是 FILESTREAM容器的头文件不能删除,一定要确保在运行该语句之前C:\FileStream并不存在。

7)创建了FILESTREAM文件组后便可创建和修改表,指定某varbinary(max)类型的列包含FILESTREAM数据。例如创建Files表,该表包含FileID和FIleContent列,具体脚本如代码:

CREATE TABLE Files
(
FileID UNIQUEIDENTIFIER ROWGUIDCOL NOT NULL UNIQUE,
ID INT UNIQUE,
FileContent VARBINARY(MAX) FILESTREAM NULL --FILESTREAM类型的二进制
)


管理与使用FILESTREAM

在创建好FILESTREAM表后即可向其中添加、修改和读取数据。SQL Server支持使用T-SQL和WIN32 API两种方式访问FILESTREAM。

对于T-SQL访问FILESTREAM数据列来说,FILESTREAM是完全透明的,也就是说,T-SQL仍然使用一般的访问varbinary(max)数据列的方式访问,并不会因为是FILESTREAM列而有所不同。

例如向Files表中插入数据、修改表数据和删除数据的SQL脚本如代码:

INSERT INTO Files --插入测试数据
VALUES (newid (),1, CAST('TestFileStream1' as varbinary(max)));
GO
UPDATE Files --更新测试数据
SET FileContent=CAST('TestFileStream2' as varbinary(max))
WHERE ID=1
GO
DELETE FROM Files --删除测试数据
WHERE ID=1

无论是插入数据还是修改数据,SQL Server都将在文件系统中创建新的文件来保存最新的修改文件内容,修改或删除数据后文件系统中的文件将保留,而不会被同时删除。

使用FILESTREAM来存储二进制大型对象BLOB)数据时,可使用Win32 API来处理文件。为了支持在Win32应用程序中处理FILESTREAMBLOB数据。所有FILESTREAM数据容器访问都是在SQL Server事务中执行的。可在同一事务中执行T-SQL语句以保持SQL数据和FILESTREAM数据之间的一致性。

  1. SQL Server 2008 的恢复和备份模式
  2. SQL Server 2008 数据挖掘的概念
  3. 在SQL Server 2008中安装安全审计


www.htsjk.Com true http://www.htsjk.com/shujukujc/19138.html NewsArticle 5)单击“确定”按钮,然后重启数据库实例,FILESTREAM在数据库实例中设置完成。 在启用了数据库实例的FILESTREAM后,接下来就需要设置数据库的FILESTREAM和...
评论暂时关闭