FILESTREAM 支援

適用於:SQL Server

重要

SQL Server Native Client (通常縮寫為 SNAC) 已從 SQL Server 2022 (16.x) 和 SQL Server Management Studio 19 (SSMS) 中移除。 不建議使用 SQL Server Native Client (SQLNCLI 或 SQLNCLI11) 和舊版 Microsoft OLE DB Provider for SQL Server (SQLOLEDB) 開發新的應用程式。 往後請改用新的 Microsoft OLE DB Driver (MSOLEDBSQL) for SQL Server 或最新的 Microsoft ODBC 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 之前發行之提供者的用戶端, Varbinary(max) 將會對應至映射。

另請參閱

SQL Server Native Client 功能