在用戶端應用程式中使用 FILESTREAM 儲存體

當您使用 FILESTREAM 來儲存二進位大型物件 (BLOB) 資料時,可以使用 Win32 API 來處理檔案。為了支援在 Win32 應用程式中使用 FILESTREAM BLOB 資料,SQL Server 提供了下列函數和 API:

  • PathName 會將路徑當做 Token 傳給 BLOB。應用程式會使用此 Token 來取得 Win32 控制代碼,並在 BLOB 資料上運作。

  • GET_FILESTREAM_TRANSACTION_CONTEXT() 會傳回代表工作階段之目前交易的 Token。應用程式會使用此 Token 將 FILESTREAM 檔案系統資料流作業繫結至此交易。

  • OpenSqlFilestream API 會取得 Win32 檔案控制代碼。應用程式會使用此控制代碼來為 FILESTREAM 資料進行資料流處理,然後將此控制代碼傳遞給下列 Win32 API:ReadFileWriteFileTransmitFileSetFilePointerSetEndOfFileFlushFileBuffers。如果應用程式使用此控制代碼呼叫任何其他 API,就會傳回 ERROR_ACCESS_DENIED 錯誤。應用程式應該使用 CloseHandle 來關閉此控制代碼。

所有的 FILESTREAM 資料容器存取都會在 SQL Server 交易中執行。Transact-SQL 陳述式可以在相同的交易中執行,以維護 SQL 資料與 FILESTREAM 資料之間的一致性。

範例

您可以在 CodePlex 網站上的 Microsoft SQL Server 範例和社群專案 (英文) 找到 FILESTREAM 範例。