Verwenden der FILESTREAM-Speicherung in Clientanwendungen

Wenn Sie FILESTREAM zum Speichern von Binary Large Object (BLOB)-Daten verwenden, können Sie die Dateien mit Win32-APIs bearbeiten. Zum Arbeiten mit FILESTREAM BLOB-Daten in Win32-Anwendungen stellt SQL Server die folgenden Funktionen und die folgende API bereit:

  • PathName gibt einen Pfad als Token an ein BLOB zurück. Eine Anwendung verwendet dieses Token, um ein Win32-Handle zu erhalten und mit BLOB-Daten zu arbeiten.

  • GET_FILESTREAM_TRANSACTION_CONTEXT () gibt ein Token zurück, das die aktuelle Transaktion einer Sitzung darstellt. Anwendungen verwenden dieses Token, um FILESTREAM-Dateisystem-Streamingvorgänge an die Transaktion zu binden.

  • Die OpenSqlFilestream-API bezieht ein Win32-Dateihandle. Die Anwendung verwendet dieses Handle, um die FILESTREAM-Daten zu streamen, und kann das Handle dann an die folgenden Win32-APIs weitergeben: ReadFile, WriteFile, TransmitFile, SetFilePointer, SetEndOfFile oder FlushFileBuffers. Wenn die Anwendung mit dem Handle irgendeine andere API anruft, wird ein ERROR_ACCESS_DENIED-Fehler zurückgegeben. Die Anwendung sollte das Handle mit CloseHandle schließen.

Alle Zugriffe auf FILESTREAM.Datencontainer erfolgen in einer SQL Server-Transaktion. Transact-SQL-Anweisungen können in der gleichen Transaktion ausgeführt werden, damit die SQL-Daten mit den FILESTREAM-Daten konsistent bleiben.