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 |
管理与使用FILESTREAM
在创建好FILESTREAM表后即可向其中添加、修改和读取数据。SQL Server支持使用T-SQL和WIN32 API两种方式访问FILESTREAM。
对于T-SQL访问FILESTREAM数据列来说,FILESTREAM是完全透明的,也就是说,T-SQL仍然使用一般的访问varbinary(max)数据列的方式访问,并不会因为是FILESTREAM列而有所不同。
例如向Files表中插入数据、修改表数据和删除数据的SQL脚本如代码:
INSERT INTO Files --插入测试数据 UPDATE Files --更新测试数据 DELETE FROM Files --删除测试数据 |
无论是插入数据还是修改数据,SQL Server都将在文件系统中创建新的文件来保存最新的修改文件内容,修改或删除数据后文件系统中的文件将保留,而不会被同时删除。
使用FILESTREAM来存储二进制大型对象BLOB)数据时,可使用Win32 API来处理文件。为了支持在Win32应用程序中处理FILESTREAMBLOB数据。所有FILESTREAM数据容器访问都是在SQL Server事务中执行的。可在同一事务中执行T-SQL语句以保持SQL数据和FILESTREAM数据之间的一致性。
- SQL Server 2008 的恢复和备份模式
- SQL Server 2008 数据挖掘的概念
- 在SQL Server 2008中安装安全审计