分享方式:


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

另請參閱

SQL Server Native Client 功能