FILESTREAM (SQL Server)FILESTREAM (SQL Server)

適用於: 是SQL Server (僅限 Windows) 否Azure SQL Database 否Azure SQL 資料倉儲 否平行處理資料倉儲 APPLIES TO: yesSQL Server (Windows only) noAzure SQL Database noAzure SQL Data Warehouse noParallel Data Warehouse

FILESTREAM 可讓 SQL ServerSQL Server 架構應用程式在檔案系統上儲存非結構化的資料,例如文件和影像。FILESTREAM enables SQL ServerSQL Server-based applications to store unstructured data, such as documents and images, on the file system. 應用程式可以利用檔案系統的豐富資料流 API 和效能,並同時維護非結構化資料與對應結構化資料之間的交易一致性。Applications can leverage the rich streaming APIs and performance of the file system and at the same time maintain transactional consistency between the unstructured data and corresponding structured data.

FILESTREAM 會將 SQL Server Database EngineSQL Server Database Engine varbinary(max) 二進位大型物件 (BLOB) 資料作為檔案儲存在檔案系統上,以整合 與 NTFS 或 ReFS 檔案系統。FILESTREAM integrates the SQL Server Database EngineSQL Server Database Engine with an NTFS or ReFS file systems by storing varbinary(max) binary large object (BLOB) data as files on the file system. Transact-SQLTransact-SQL 陳述式可以插入、更新、查詢、搜尋和備份 FILESTREAM 資料。statements can insert, update, query, search, and back up FILESTREAM data. Win32 檔案系統介面提供了資料的資料流方式存取。Win32 file system interfaces provide streaming access to the data.

FILESTREAM 會使用 NT 系統快取來儲存檔案資料。FILESTREAM uses the NT system cache for caching file data. 如此可減少 FILESTREAM 資料可能對 Database EngineDatabase Engine 效能產生的任何影響。This helps reduce any effect that FILESTREAM data might have on Database EngineDatabase Engine performance. 並不會使用 SQL ServerSQL Server 緩衝集區;因此,此記憶體可用於查詢處理。The SQL ServerSQL Server buffer pool is not used; therefore, this memory is available for query processing.

當您安裝或升級 SQL ServerSQL Server時,並不會自動啟用 FILESTREAM。FILESTREAM is not automatically enabled when you install or upgrade SQL ServerSQL Server. 您必須使用 SQL Server 組態管理員和 SQL Server Management StudioSQL Server Management Studio來啟用 FILESTREAM。You must enable FILESTREAM by using SQL Server Configuration Manager and SQL Server Management StudioSQL Server Management Studio. 若要使用 FILESTREAM,您必須建立或修改資料庫,以便包含特殊類型的檔案群組。To use FILESTREAM, you must create or modify a database to contain a special type of filegroup. 然後,請建立或修改資料表,讓它包含具有 FILESTREAM 屬性的 varbinary(max) 資料行。Then, create or modify a table so that it contains a varbinary(max) column with the FILESTREAM attribute. 完成這些工作之後,您就可以使用 Transact-SQLTransact-SQL 和 Win32 來管理 FILESTREAM 資料。After you complete these tasks, you can use Transact-SQLTransact-SQL and Win32 to manage the FILESTREAM data.

使用 FILESTREAM 的時機When to Use FILESTREAM

SQL ServerSQL Server中,BLOB 可以是將資料儲存在資料表中的標準 varbinary(max) 資料,或是將資料儲存在檔案系統中的 FILESTREAM varbinary(max) 物件。In SQL ServerSQL Server, BLOBs can be standard varbinary(max) data that stores the data in tables, or FILESTREAM varbinary(max) objects that store the data in the file system. 資料的大小和使用情況可決定您是應該使用資料庫儲存體還是檔案系統儲存體。The size and use of the data determines whether you should use database storage or file system storage. 如果下列條件成立,您應該考慮使用 FILESTREAM:If the following conditions are true, you should consider using FILESTREAM:

  • 平均來說,儲存的物件大於 1 MB。Objects that are being stored are, on average, larger than 1 MB.
  • 快速讀取權非常重要。Fast read access is important.
  • 您正在開發將中介層用於應用程式邏輯的應用程式。You are developing applications that use a middle tier for application logic.

如果是較小的物件,將 varbinary(max) BLOB 儲存在資料庫中通常會提供更好的資料流處理效能。For smaller objects, storing varbinary(max) BLOBs in the database often provides better streaming performance.

FILESTREAM 儲存體FILESTREAM Storage

FILESTREAM 儲存體會實作為 varbinary(max) 資料行,該資料行中的資料會當做 BLOB 儲存在檔案系統上。FILESTREAM storage is implemented as a varbinary(max) column in which the data is stored as BLOBs in the file system. BLOB 的大小只受到檔案系統磁碟區大小的限制。The sizes of the BLOBs are limited only by the volume size of the file system. 標準 varbinary(max) 限制 (2 GB 檔案大小) 不適用於檔案系統中所儲存的 BLOB。The standard varbinary(max) limitation of 2-GB file sizes does not apply to BLOBs that are stored in the file system.

若要指定資料行應該將資料儲存在檔案系統上,請在 varbinary(max) 資料行上指定 FILESTREAM 屬性。To specify that a column should store data on the file system, specify the FILESTREAM attribute on a varbinary(max) column. 如此會讓 Database EngineDatabase Engine 將該資料行的所有資料都儲存在檔案系統上,而不是儲存在資料庫檔案中。This causes the Database EngineDatabase Engine to store all data for that column on the file system, but not in the database file.

FILESTREAM 資料必須儲存在 FILESTREAM 檔案群組中。FILESTREAM data must be stored in FILESTREAM filegroups. FILESTREAM 檔案群組是包含檔案系統目錄 (而非檔案本身) 的特殊檔案群組,A FILESTREAM filegroup is a special filegroup that contains file system directories instead of the files themselves. 這些檔案系統目錄稱為「資料容器」 。These file system directories are called data containers. 資料容器是 Database EngineDatabase Engine 儲存體與檔案系統儲存體之間的介面。Data containers are the interface between Database EngineDatabase Engine storage and file system storage.

當您使用 FILESTREAM 儲存體時,請考慮以下事項:When you use FILESTREAM storage, consider the following:

  • 當資料表包含 FILESTREAM 資料行時,每一個資料列都必須有唯一的非 Null 資料列識別碼。When a table contains a FILESTREAM column, each row must have a nonnull unique row ID.
  • 您可以將多個資料容器加入至 FILESTREAM 檔案群組。Multiple data containers can be added to a FILESTREAM filegroup.
  • FILESTREAM 資料容器無法巢狀化。FILESTREAM data containers cannot be nested.
  • 當您正在使用容錯移轉叢集時,FILESTREAM 檔案群組必須在共用磁碟資源上。When you are using failover clustering, the FILESTREAM filegroups must be on shared disk resources.
  • FILESTREAM 檔案群組可以在壓縮的磁碟區上。FILESTREAM filegroups can be on compressed volumes.

整合式管理Integrated Management

由於 FILESTREAM 會實作為 varbinary(max) 資料行,並直接整合到 Database EngineDatabase Engine中,所以大多數的 SQL ServerSQL Server 管理工具和功能不需要修改 FILESTREAM 資料即可運作。Because FILESTREAM is implemented as a varbinary(max) column and integrated directly into the Database EngineDatabase Engine, most SQL ServerSQL Server management tools and functions work without modification for FILESTREAM data. 例如,您可以搭配 FILESTREAM 資料使用所有的備份和復原模型,而且 FILESTREAM 資料會與資料庫中的結構化資料一起備份。For example, you can use all backup and recovery models with FILESTREAM data, and the FILESTREAM data is backed up with the structured data in the database. 如果您不想要將 FILESTREAM 資料與關聯式資料一起備份,您可以使用部分備份來排除 FILESTREAM 檔案群組。If you do not want to back up FILESTREAM data with relational data, you can use a partial backup to exclude FILESTREAM filegroups.

整合式安全性Integrated Security

SQL ServerSQL Server中,系統會維護 FILESTREAM 資料的安全性,就像是維護其他資料的安全性一樣:在資料表或資料行層級上授與權限。In SQL ServerSQL Server, FILESTREAM data is secured just like other data is secured: by granting permissions at the table or column levels. 如果使用者具有資料表中 FILESTREAM 資料行的權限,該使用者便可開啟關聯的檔案。If a user has permission to the FILESTREAM column in a table, the user can open the associated files.

注意

FILESTREAM 資料上不支援加密。Encryption is not supported on FILESTREAM data.

只有執行 SQL ServerSQL Server 服務帳戶所使用的帳戶會被授與 FILESTREAM 容器的權限。Only the account under which the SQL ServerSQL Server service account runs is granted permissions to the FILESTREAM container. 我們建議您不要將資料容器的權限授與其他帳戶。We recommend that no other account be granted permissions on the data container.

注意

SQL 登入不會使用 FILESTREAM 容器。SQL logins will not work with FILESTREAM containers. 只有 NTFS 或 ReFS 驗證會使用 FILESTREAM 容器。Only NTFS or ReFS authentication will work with FILESTREAM containers.

使用 Transact-SQL 和檔案系統資料流存取來存取 BLOB 資料Accessing BLOB Data with Transact-SQL and File System Streaming Access

在您將資料儲存在 FILESTREAM 資料行中以後,可以使用 Transact-SQLTransact-SQL 交易或 Win32 API 來存取檔案。After you store data in a FILESTREAM column, you can access the files by using Transact-SQLTransact-SQL transactions or by using Win32 APIs.

Transact-SQL 存取Transact-SQL Access

您可以藉由使用 Transact-SQLTransact-SQL來插入、更新和刪除 FILESTREAM 資料:By using Transact-SQLTransact-SQL, you can insert, update, and delete FILESTREAM data:

  • 您可以使用插入作業,在 FILESTREAM 欄位中預先填入 null 值、空白值,或是相當簡短的內嵌資料。You can use an insert operation to prepopulate a FILESTREAM field with a null value, empty value, or relatively short inline data. 但是,將大量的資料當做資料流處理成使用 Win32 介面的檔案時,會比較有效率。However, a large amount of data is more efficiently streamed into a file that uses Win32 interfaces.
  • 當您更新 FILESTREAM 欄位時,您會修改檔案系統中的基礎 BLOB 資料。When you update a FILESTREAM field, you modify the underlying BLOB data in the file system. 當 FILESTREAM 欄位設定為 NULL 時,與此欄位有關聯的 BLOB 資料會遭到刪除。When a FILESTREAM field is set to NULL, the BLOB data associated with the field is deleted. 您無法使用實作為 UPDATE Transact-SQLTransact-SQL .Write() 的區塊更新來執行資料的部分更新。You cannot use a Transact-SQLTransact-SQL chunked update, implemented as UPDATE . Write(), to perform partial updates to the data.
  • 當您刪除資料列,或是刪除或截斷包含 FILESTREAM 資料的資料表時,您會刪除檔案系統中的基礎 BLOB 資料。When you delete a row or delete or truncate a table that contains FILESTREAM data, you delete the underlying BLOB data in the file system.

檔案系統資料流存取File System Streaming Access

Win32 資料流支援可在 SQL ServerSQL Server 交易的內容中運作。The Win32 streaming support works in the context of a SQL ServerSQL Server transaction. 在交易內時,您可以使用 FILESTREAM 函數來取得檔案的邏輯 UNC 檔案系統路徑。Within a transaction, you can use FILESTREAM functions to obtain a logical UNC file system path of a file. 然後,您可使用 OpenSqlFilestream API 取得檔案控制代碼。You then use the OpenSqlFilestream API to obtain a file handle. 之後,此控制代碼可由 Win32 檔案資料流介面 (如 ReadFile() 和 WriteFile()) 所使用,以透過檔案系統來存取及更新檔案。This handle can then be used by Win32 file streaming interfaces, such as ReadFile() and WriteFile(), to access and update the file by way of the file system.

由於檔案作業是交易式,所以您無法透過檔案系統來刪除或重新命名 FILESTREAM 檔案。Because file operations are transactional, you cannot delete or rename FILESTREAM files through the file system.

陳述式模型Statement Model

FILESTREAM 檔案系統存取會使用檔案的開啟和關閉來建立 Transact-SQLTransact-SQL 陳述式的模型。The FILESTREAM file system access models a Transact-SQLTransact-SQL statement by using file open and close. 當檔案控制代碼開啟時,此陳述式便會開始,而當此控制代碼關閉時,此陳述式就會結束。The statement starts when a file handle is opened and ends when the handle is closed. 例如,當寫入控制代碼關閉時,在資料表上註冊之任何可能的 AFTER 觸發程序便會引發,就像是 UPDATE 陳述式已完成一樣。For example, when a write handle is closed, any possible AFTER trigger that is registered on the table fires as if an UPDATE statement is completed.

儲存體命名空間Storage Namespace

在 FILESTREAM 中, Database EngineDatabase Engine 會控制 BLOB 實體檔案系統命名空間。In FILESTREAM, the Database EngineDatabase Engine controls the BLOB physical file system namespace. 有一個新的內建函數 PathName提供了對應至資料表內每一個 FILESTREAM 資料格之 BLOB 的邏輯 UNC 路徑。A new intrinsic function, PathName, provides the logical UNC path of the BLOB that corresponds to each FILESTREAM cell in the table. 應用程式會使用此邏輯路徑來取得 Win32 控制代碼,並在 BLOB 資料上運作 (透過一般 Win32 檔案系統介面)。The application uses this logical path to obtain the Win32 handle and operate on the BLOB data by using regular Win32 file system interfaces. 如果 FILESTREAM 資料行的值為 NULL,此函數就會傳回 NULL。The function returns NULL if the value of the FILESTREAM column is NULL.

交易檔案系統存取Transacted File System Access

有一個新的內建函數 GET_FILESTREAM_TRANSACTION_CONTEXT()提供了一個 Token,它代表與工作階段有關聯的目前交易。A new intrinsic function, GET_FILESTREAM_TRANSACTION_CONTEXT(), provides the token that represents the current transaction that the session is associated with. 此交易必須已經開始,而且尚未中止或認可。The transaction must have been started and not yet aborted or committed. 應用程式會藉由取得 Token,將 FILESTREAM 檔案系統資料流作業與開始的交易繫結。By obtaining a token, the application binds the FILESTREAM file system streaming operations with a started transaction. 如果沒有任何明確開始的交易,此函數就會傳回 NULL。The function returns NULL in case of no explicitly started transaction.

在認可或中止此交易之前,所有的檔案控制代碼都必須先關閉。All file handles must be closed before the transaction commits or aborts. 如果有控制代碼在交易範圍之外仍然為開啟狀態,針對此控制代碼的其他讀取將會造成失敗;對此控制代碼的其他寫入將會成功,因為實際資料將不會寫入磁碟中。If a handle is left open beyond the transaction scope, additional reads against the handle will cause a failure; additional writes against the handle will succeed, but the actual data will not be written to disk. 同樣地,如果關閉了 Database EngineDatabase Engine 的資料庫或執行個體,則所有開啟的控制代碼都將會失效。Similarly, if the database or instance of the Database EngineDatabase Engine shuts down, all open handles are invalidated.

交易持久性Transactional Durability

使用 FILESTREAM 時, Database EngineDatabase Engine 會在交易認可之後確保從檔案系統資料流存取修改之 FILESTREAM BLOB 資料的交易持續性。With FILESTREAM, upon transaction commit, the Database EngineDatabase Engine ensures transaction durability for FILESTREAM BLOB data that is modified from the file system streaming access.

隔離語意Isolation Semantics

隔離語意受到 Database EngineDatabase Engine 交易隔離等級的管制。The isolation semantics are governed by Database EngineDatabase Engine transaction isolation levels. 讀取認可的隔離等級支援 Transact-SQLTransact-SQL 和檔案系統存取。Read-committed isolation level is supported for Transact-SQLTransact-SQL and file system access. 可重複的讀取作業以及可序列化和快照集隔離均受到支援。Repeatable read operations, and also serializable and snapshot isolations, are supported. 中途讀取則不受到支援。Dirty read is not supported.

檔案系統存取的開啟作業不會等候任何鎖定。The file system access open operations do not wait for any locks. 如果開啟作業因為交易隔離而無法存取資料,開啟作業就會立即失敗。Instead, the open operations fail immediately if they cannot access the data because of transaction isolation. 如果開啟作業因為隔離違規而無法繼續,則資料流 API 呼叫會因為 ERROR_SHARING_VIOLATION 而失敗。The streaming API calls fail with ERROR_SHARING_VIOLATION if the open operation cannot continue because of isolation violation.

若要允許進行部分更新,應用程式可以發出裝置 FS 控制項 (FSCTL_SQL_FILESTREAM_FETCH_OLD_CONTENT),以便將舊的內容提取到開啟之控制代碼所參考的檔案。To allow for partial updates to be made, the application can issue a device FS control (FSCTL_SQL_FILESTREAM_FETCH_OLD_CONTENT) to fetch the old content into the file that the opened handle references. 如此將會觸發伺服器端的舊內容複本。This will trigger a server-side old content copy. 為了在處理極大型的檔案時取得更好的應用程式效能及避免可能的逾時,我們建議您使用非同步 I/O。For better application performance and to avoid running into potential time-outs when you are working with very large files, we recommend that you use asynchronous I/O.

如果在寫入此控制代碼之後發出 FSCTL,則最後一個寫入作業將會保存下來,而之前對此控制代碼的寫入將會遺失。If the FSCTL is issued after the handle has been written to, the last write operation will persist, and prior writes that were made to the handle are lost.

檔案系統 API 和支援的隔離等級File System APIs and Supported Isolation Levels

當檔案系統 API 由於隔離違規而無法開啟檔案時,系統就會傳回 ERROR_SHARING_VIOLATION 例外狀況。When a file system API cannot open a file because of an isolation violation, an ERROR_SHARING_VIOLATION exception is returned. 當兩筆交易嘗試存取相同的檔案時,就會發生這種隔離違規。This isolation violation occurs when two transactions try to access the same file. 存取作業的結果主要取決於用來開啟檔案的模式,以及執行交易的 SQL ServerSQL Server 版本。The outcome of the access operation depends on the mode the file was opened in and the version of SQL ServerSQL Server that the transaction is running on. 下表概述了兩筆存取相同檔案之交易的可能結果。The following table outlines the possibly outcomes for two transactions that are accessing the same file.

交易 1Transaction 1 交易 2Transaction 2 在 SQL Server 2008 上的結果Outcome on SQL Server 2008 在 SQL Server 2008 R2 和更新版本上的結果Outcome on SQL Server 2008 R2 and later versions
開啟以便讀取。Open for read. 開啟以便讀取。Open for read. 兩筆交易都成功。Both succeed. 兩筆交易都成功。Both succeed.
開啟以便讀取。Open for read. 開啟以便寫入。Open for write. 兩筆交易都成功。Both succeed. 交易 2 底下的寫入作業不會影響在交易 1 中執行的讀取作業。Write operations under transaction 2 do not affect read operations performed in transaction 1. 兩筆交易都成功。Both succeed. 交易 2 底下的寫入作業不會影響在交易 1 中執行的讀取作業。Write operations under transaction 2 do not affect read operations performed in transaction 1.
開啟以便寫入。Open for write. 開啟以便讀取。Open for read. 交易 2 的開啟作業失敗,並傳回 ERROR_SHARING_VIOLATION 例外狀況。Open for transaction 2 fails with an ERROR_SHARING_VIOLATION exception. 兩筆交易都成功。Both succeed.
開啟以便寫入。Open for write. 開啟以便寫入。Open for write. 交易 2 的開啟作業失敗,並傳回 ERROR_SHARING_VIOLATION 例外狀況。Open for transaction 2 fails with an ERROR_SHARING_VIOLATION exception. 交易 2 的開啟作業失敗,並傳回 ERROR_SHARING_VIOLATION 例外狀況。Open for transaction 2 fails with an ERROR_SHARING_VIOLATION exception.
開啟以便讀取。Open for read. 開啟以便進行 SELECT。Open for SELECT. 兩筆交易都成功。Both succeed. 兩筆交易都成功。Both succeed.
開啟以便讀取。Open for read. 開啟以便進行 UPDATE 或 DELETE。Open for UPDATE or DELETE. 兩筆交易都成功。Both succeed. 交易 2 底下的寫入作業不會影響在交易 1 中執行的讀取作業。Write operations under transaction 2 do not affect read operations performed in transaction 1. 兩筆交易都成功。Both succeed. 交易 2 底下的寫入作業不會影響在交易 1 中執行的讀取作業。Write operations under transaction 2 do not affect read operations performed in transaction 1.
開啟以便寫入。Open for write. 開啟以便進行 SELECT。open for SELECT. 交易 2 會封鎖直到交易 1 認可或結束交易,或者交易鎖定逾時為止。Transaction 2 blocks until transaction 1 commits or ends the transaction, or the transaction lock times out. 兩筆交易都成功。Both succeed.
開啟以便寫入。Open for write. 開啟以便進行 UPDATE 或 DELETE。Open for UPDATE or DELETE. 交易 2 會封鎖直到交易 1 認可或結束交易,或者交易鎖定逾時為止。Transaction 2 blocks until transaction 1 commits or ends the transaction, or the transaction lock times out. 交易 2 會封鎖直到交易 1 認可或結束交易,或者交易鎖定逾時為止。Transaction 2 blocks until transaction 1 commits or ends the transaction, or the transaction lock times out.
開啟以便進行 SELECT。Open for SELECT. 開啟以便讀取。Open for read. 兩筆交易都成功。Both succeed. 兩筆交易都成功。Both succeed.
開啟以便進行 SELECT。Open for SELECT. 開啟以便寫入。Open for write. 兩筆交易都成功。Both succeed. 交易 2 底下的寫入作業不會影響交易 1。Write operations under transaction 2 do not affect transaction 1. 兩筆交易都成功。Both succeed. 交易 2 底下的寫入作業不會影響交易 1。Write operations under transaction 2 do not affect transaction 1.
開啟以便進行 UPDATE 或 DELETE。Open for UPDATE or DELETE. 開啟以便讀取。Open for read. 交易 2 的開啟作業失敗,並傳回 ERROR_SHARING_VIOLATION 例外狀況。The open operation on transaction 2 fails with an ERROR_SHARING_VIOLATION exception. 兩筆交易都成功。Both succeed.
開啟以便進行 UPDATE 或 DELETE。Open for UPDATE or DELETE. 開啟以便寫入。Open for write. 交易 2 的開啟作業失敗,並傳回 ERROR_SHARING_VIOLATION 例外狀況。The open operation on transaction 2 fails with an ERROR_SHARING_VIOLATION exception. 交易 2 的開啟作業失敗,並傳回 ERROR_SHARING_VIOLATION 例外狀況。The open operation on transaction 2 fails with an ERROR_SHARING_VIOLATION exception.
開啟以便進行可重複讀取的 SELECT。Open for SELECT with repeatable read. 開啟以便讀取。Open for read. 兩筆交易都成功。Both succeed. 兩筆交易都成功。Both succeed.
開啟以便進行可重複讀取的 SELECT。Open for SELECT with repeatable read. 開啟以便寫入。Open for write. 交易 2 的開啟作業失敗,並傳回 ERROR_SHARING_VIOLATION 例外狀況。The open operation on transaction 2 fails with an ERROR_SHARING_VIOLATION exception. 交易 2 的開啟作業失敗,並傳回 ERROR_SHARING_VIOLATION 例外狀況。The open operation on transaction 2 fails with an ERROR_SHARING_VIOLATION exception.

從遠端用戶端寫出Write-Through from Remote Clients

遠端檔案系統對 FILESTREAM 資料的存取,是透過伺服器訊息區塊 (SMB) 通訊協定來啟用。Remote file system access to FILESTREAM data is enabled over the Server Message Block (SMB) protocol. 如果用戶端在遠端,則用戶端不會快取任何寫入作業。If the client is remote, no write operations are cached by the client side. 寫入作業一定會傳送給伺服器,The write operations will always be sent to the server. 資料可以在伺服器端快取。The data can be cached on the server side. 我們建議您將在遠端用戶端上執行的應用程式合併小型寫入作業,以便使用較多的資料來減少寫入作業。We recommend that applications that are running on remote clients consolidate small write operations to make fewer write operations using larger data size.

使用 FILESTREAM 控制代碼來建立記憶體對應檢視 (記憶體對應 I/O) 不受到支援。Creating memory mapped views (memory mapped I/O) by using a FILESTREAM handle is not supported. 如果將記憶體對應用於 FILESTREAM 資料, Database EngineDatabase Engine 將無法保證資料的一致性與持續性或是資料庫的完整性。If memory mapping is used for FILESTREAM data, the Database EngineDatabase Engine cannot guarantee consistency and durability of the data or the integrity of the database.

啟用及設定 FILESTREAMEnable and Configure FILESTREAM
建立啟用 FILESTREAM 的資料庫Create a FILESTREAM-Enabled Database
建立儲存 FILESTREAM 資料的資料表Create a Table for Storing FILESTREAM Data
使用 Transact-SQL 存取 FILESTREAM 資料 建立 FILESTREAM 資料的用戶端應用程式Access FILESTREAM Data with Transact-SQL Create Client Applications for FILESTREAM Data
使用 OpenSqlFilestream 存取 FILESTREAM 資料Access FILESTREAM Data with OpenSqlFilestream
對 FILESTREAM 資料進行部分更新Make Partial Updates to FILESTREAM Data
避免與 FILESTREAM 應用程式中的資料庫作業相衝突Avoid Conflicts with Database Operations in FILESTREAM Applications
移動啟用 FILESTREAM 功能的資料庫Move a FILESTREAM-Enabled Database
設定容錯移轉叢集上的 FILESTREAMSet Up FILESTREAM on a Failover Cluster
為 FILESTREAM 存取設定防火牆Configure a Firewall for FILESTREAM Access

FILESTREAM 與其他 SQL Server 功能的相容性FILESTREAM Compatibility with Other SQL Server Features
Filestream 及 FileTable 動態管理檢視 (Transact-SQL)Filestream and FileTable Dynamic Management Views (Transact-SQL)
Filestream 和 FileTable 目錄檢視 (Transact-SQL)Filestream and FileTable Catalog Views (Transact-SQL)
Filestream 和 FileTable 系統預存程序 (Transact-SQL)Filestream and FileTable System Stored Procedures (Transact-SQL)