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) 將會對應至映像。