FILESTREAM 支持
适用范围:SQL Server
重要
SQL Server Native Client (SNAC) 未随附:
- SQL Server 2022 (16.x) 及更高版本
- SQL Server Management Studio 19 及更高版本
不建议使用 SQL Server Native Client(SQLNCLI 或 SQLNCLI11)和旧的 Microsoft OLE DB Provider for SQL Server (SQLOLEDB)进行新的应用程序开发。
对于新项目,请使用以下驱动程序之一:
对于作为 SQL Server 数据库引擎组件(版本 2012 到 2019)随附的 SQLNCLI,请参阅此支持生命周期特例。
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 之前发布的客户端, varbinary(max) 将映射到映像。