FILESTREAM 支持

适用于:SQL Server

重要

已从 SQL Server 2022 (16.x) 和 SQL Server Management Studio 19 (SSMS) 中删除SQL Server Native Client(通常缩写为 SNAC)。 不建议在新应用程序开发工作中使用 SQL Server Native Client(SQLNCLI 或 SQLNCLI11)和旧版 Microsoft OLE DB Provider for SQL Server (SQLOLEDB)。 请在此后切换为使用新版 Microsoft OLE DB Driver (MSOLEDBSQL) for SQL Server 或最新版的 Microsoft OLE DB Driver for SQL Server。 对于作为 SQL Server 数据库引擎组件随附的 SQLNCLI (版本 2012 到 2019) ,请参阅此支持生命周期异常

FILESTREAM 允许通过 SQL Server 或通过直接访问 Windows 文件系统来存储和访问大型二进制值。 大型二进制值是大于 2 GB 的值。 若要详细了解增强的 FILESTREAM 支持,请参阅 FILESTREAM (SQL Server)

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

还可以使用 Windows 文件系统 API 访问和更新 FILESTREAM 列。

有关详情,请参阅以下主题:

查询 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 (9.x) 随附的 SQL Server Native Client 版本编译客户端,并且应用程序连接到较新版本的 SQL Server,则 varbinary (max) 行为将与 SQL Server 2005 (9.x) 兼容。 就是说,返回数据的最大大小将限制为不超过 2 GB。 对于超过 2 GB 的结果值,将发生截断,并将返回“字符串数据,右截断”警告。

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

对于使用 SQLOLEDB 或 SQL Server 2005 (9.x) SQL Server Native Client 版本之前发布的 SQLOLEDB 或其他提供程序的客户端,varbinary (max) 将映射到映像。

另请参阅

SQL Server Native Client 功能