SQLserver FileStream的出现就是为了解决对大对象的存储中一个矛盾。
对于图片的存储方式
第一种:方式是存储在数据库里面,这种方式一般使用image字段,或者varbinary(max)来做。好处是可以统一备份,但实际上读取效率比较低。大于1MB的文件就会有问题
第二种:方式是文件存储在文件系统,而数据库中存储了一个路径。这种方式数据库压力减轻了,却很不方便统一备份和管理。
SQL SERVER 2008的文件流其实就是二者的统一。文件还是放在文件系统的,但由数据库进行管理。可以统一备份和还原。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
filestream_access_level参数有效的值包括:
◆ 0 在该实例上禁用FILESTREAM(文件流),这是默认值。
◆ 1 为Transact-SQL访问启用FILESTREAM(文件流)
◆ 2 为Transact-SQL和Win32流访问启用FILESTREAM(文件流)
经过这两个步骤后,FILESTREAM特性就被启用了,再进行导入,就没问题了