FILESTREAM 支持

FILESTREAM 功能(已在 SQL Server 2008 中引入)允许通过 SQL Server 或通过直接访问 Windows 文件系统来存储和访问大型二进制值。大型二进制值是大于 2 GB 的值。有关增强的 FILESTREAM 支持的详细信息,请参阅FILESTREAM 概述

默认情况下,在打开数据库连接时,@@TEXTSIZE 将设置为 -1(“无限制”)。

还可以使用 Windows 文件系统 API 访问和更新 FILESTREAM 列。有关详细信息,请参阅FILESTREAM 概述

有关详细信息,请参阅以下主题:

有关演示该功能的示例应用程序的信息,请参阅安装 SQL Server 示例和示例数据库的注意事项

查询 FILESTREAM 列

OLE DB 中的架构行集不会报告列是否是 FILESTREAM 列。OLE DB 中的 ITableDefinition 不能用于创建 FILESTREAM 列。

诸如 ODBC 中的 SQLColumns 这样的目录函数不会报告列是否是 FILESTREAM 列。

若要创建 FILESTREAM 列或检测哪些现有列是 FILESTREAM 列,可以使用 sys.columns 目录视图的 is_filestream 列。

以下是一个示例:

-- Create a table with a FILESTREAM column.
CREATE TABLE Bob_01 (GuidCol1 uniqueidentifier ROWGUIDCOL NOT NULL UNIQUE DEFAULT NEWID(), IntCol2 int, varbinaryCol3 varbinary(max) FILESTREAM)

-- Find FILESTREAM columns.
SELECT name FROM Sys.columns where is_filestream=1

-- Determine whether a column is a FILESTREAM column.
SELECT is_filestream FROM Sys.columns where name = 'varbinaryCol3' and object_id IN (SELECT object_id from Sys.tables where name='Bob_01')

下级兼容性

如果您的客户端是使用 SQL Server 2005 附带的 SQL Server Native Client 版本编译的,并且应用程序连接到更高版本的 SQL Server,则 varbinary(max) 行为将与 SQL Server 2005 兼容。就是说,返回数据的最大大小将限制为不超过 2 GB。对于超过 2 GB 的结果值,将发生截断,并将返回“字符串数据,右截断”警告。

如果将数据类型兼容性设置为 80,则客户端行为将与下级客户端行为一致。

如果客户端使用 SQLOLEDB,或使用在 SQL Server Native Client 的 SQL Server 2005 版本之前发布的其他访问接口,则 varbinary(max) 将映射到映像。