클라이언트 응용 프로그램에서 FILESTREAM 저장소 사용

FILESTREAM을 사용하여 BLOB(binary large object) 데이터를 저장할 경우 Win32 API를 사용하여 파일 작업을 수행할 수 있습니다. Win32 응용 프로그램에서의 FILESTREAM BLOB 데이터 작업을 지원하기 위해 SQL Server에서는 다음 기능과 API를 제공합니다.

  • PathName은 BLOB에 대한 토큰으로 경로를 반환합니다. 응용 프로그램은 이 토큰을 사용하여 Win32 핸들을 얻고 BLOB 데이터에 대한 작업을 수행합니다.

  • GET_FILESTREAM_TRANSACTION_CONTEXT()는 세션의 현재 트랜잭션을 나타내는 토큰을 반환합니다. 응용 프로그램은 이 토큰을 사용하여 FILESTREAM 파일 시스템 스트리밍 작업을 트랜잭션에 바인딩합니다.

  • OpenSqlFilestream API는 Win32 파일 핸들을 얻습니다. 응용 프로그램에서는 이 핸들을 사용하여 FILESTREAM 데이터를 스트리밍한 후 ReadFile, WriteFile, TransmitFile, SetFilePointer, SetEndOfFile 또는 FlushFileBuffers 같은 Win32 API 함수에 핸들을 전달합니다. 응용 프로그램이 핸들을 사용하여 다른 API를 호출할 경우 ERROR_ACCESS_DENIED 오류가 반환됩니다. 응용 프로그램에서는 CloseHandle을 사용하여 핸들을 종료해야 합니다.

모든 FILESTREAM 데이터 컨테이너 액세스는 SQL Server 트랜잭션에서 수행됩니다. Transact-SQL 문은 동일한 트랜잭션에서 실행되어 SQL 데이터 및 FILESTREAM 데이터 간의 일관성을 유지 관리할 수 있습니다.

CodePlex 웹 사이트의 Microsoft SQL Server 예제 및 커뮤니티 프로젝트(Microsoft SQL Server Samples and Community Projects)에서 FILESTREAM 예를 찾을 수 있습니다.