クライアント アプリケーションでの FILESTREAM ストレージの使用
FILESTREAM を使用してバイナリ ラージ オブジェクト (BLOB) データを格納すると、Win32 API を使用してそのファイルを操作できます。Win32 アプリケーションで FILESTREAM BLOB データを操作できるようにするために、SQL Server には次の関数と API が用意されています。
PathName。BLOB へのパスをトークンとして返します。アプリケーションでは、このトークンを使用して Win32 ハンドルを取得し、BLOB データを操作します。
GET_FILESTREAM_TRANSACTION_CONTEXT()。セッションの現在のトランザクションを表すトークンを返します。アプリケーションでは、このトークンを使用して、FILESTREAM のファイル システム ストリーミング操作をトランザクションにバインドします。
OpenSqlFilestream API。Win32 ファイル ハンドルを取得します。アプリケーションでは、このハンドルを使用して FILESTREAM データをストリーミングして、Win32 API の ReadFile、WriteFile、TransmitFile、SetFilePointer、SetEndOfFile、または FlushFileBuffers にハンドルを渡すことができます。このハンドルを使用してその他の API を呼び出すと、ERROR_ACCESS_DENIED エラーが返されます。ハンドルは、CloseHandle を使用して閉じる必要があります。
FILESTREAM データ コンテナーへのアクセスは、すべて SQL Server のトランザクションで実行されます。同じトランザクションで Transact-SQL ステートメントを実行すると、SQL データと FILESTREAM データの一貫性を維持できます。