在SQL Server 2008 中,新的FILESTREAM 数据类型,允许像文件和图片这种大型的二进制数据可以直接在NTFS文件系统中进行存储;文档或图片将作为数据库的一部分整体进行维护,并可以维护事务的一致性。FILESTREAM允许大型二进制数据的存储,通常都是由数据库进行管理,并以单独文件的方式在数据库外面进行存储,它可以使用NTFS文件流的API进行访问。使用NTFS文件流API使得文件的访问更加高效,并且可以保持数据库整体的安全性性与备份等特性。

在本实验中,我们将使用FileStream数据类型存储视频文件,并使用代码访问该文件,从而发布在Web上,并使用一个客户端工具进行访问。

创建FILESTREAM存储区

打开C:\SQLHOLS 文件夹,然后打开FILESTREAM目录当中的 “FILESTREAM.ssmssln”文件。
此时,将打开SSMS窗口,并提示连接到服务器,在Server Type中选择“Database Engine”, Server Name中指定”(local)”,然后点击Connect按钮。

返回刚才打开的Windows Explorer 窗口,然后双击DB Data 文件夹。
返回SQL Server Management Studio。

在View 菜单中,选择Solution Explorer。
在Solution Explorer 面板中,双击CREATE DB.sql文件。
查看STEP 1下面的T-SQL语句,选中所有代码,然后点击Execute。

返回Windows Explorer 窗口。
10. 浏览C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA目录,此时,将会看到一个名为‘filestream1’的目录,这是SQL Server 2008 创建出来,用来存储FILESTREAM 数据类型的数据目录。

创建FILESTREAM数据类型

返回SQL Server Management Studio 窗口。
在Solution Explorer 面板中,双击CREATE TABLE.sql文件。
在查询窗口中,选择STEP 2下面的T-SQL语句,然后点击Execute执行代码。
注意,FILESTREAM数据列实际上就是在VARBINARY(MAX)上添加了FILESTREAM属性,并且存储这种数据需要一个uniqueidentifier的数据列作为ID。
选择STEP 3 下面的T-SQL代码,然后执行。

查询FILESTREAM数据

返回Windows Explorer 窗口,并点击工具条上的返回按钮,返回到最开始的FILESTREAM目录。
双击 UploadVideos.bat。
等待上传的结束,然后点击任意键退出命令提示窗口。
返回SQL Server Management Studio 窗口。
选择STEP 4 下面的T-SQL 语句然后执行,将可以看到在数据表中已经有了一些数据,并已经存在FILESTREAM数据。

显示FILESTREAM数据

返回Windows Explorer 窗口。
双击MediaLibrary.sln链接,此时,将打开一个解决方案。
在Solution Explorer中,右键单击default.aspx,点击”View in Browser”。
此时,可以看到一个Web页面,它可以将数据库中刚刚上传的视频加载出来,以列表的方式呈现出来。
点击任意项中的Play 链接。
结束视频播放,关闭Internet Explorer 窗口,返回到视频列表页面中。
点击工具条中的Refresh 按钮。

上传FILESTREAM数据

点击Media Library 页面底部的Browse 按钮。
浏览My Documents -> My Videos ,并选择PGR3_E32005_Xbox360_Video.wmv。
点击Open。
在Comment 文本框中随便输入一些注释。
点击Upload Media按钮。
这时,在列表中将可以看到刚刚上传的视频文件。点击Play 按钮可以查看这个文件。
关闭新打开的Windows Media Player 窗口。
关闭Media Library Internet Explorer 窗口。


查看操作FileStream的程序代码

在Windows Explorer中,双击MediaLibrary.sln。
如果Default.aspx.cs 没有在编辑区域打开,则在Solution Explorer 面板中,右击Default.aspx 文件,然后选择View Code菜单项。
浏览StoreUploadedMediaFile 方法中的9个步骤。
关闭Microsoft Visual Studio 2008。