다음을 통해 공유


FileTables(SQL Server)

적용 대상: SQL Server

FileTable 기능은 Windows 파일 네임스페이스를 지원하고 Windows 애플리케이션과의 호환성을 SQL Server에 저장된 파일 데이터에 제공합니다. FileTable을 통해 애플리케이션이 해당 스토리지 및 데이터 관리 구성 요소를 통합할 수 있으며, 구조화되지 않은 데이터 및 메타데이터에 대한 통합 SQL Server 서비스(전체 텍스트 검색 및 의미 체계 검색 포함)가 제공됩니다.

즉, FileTables라는 SQL Server의 특수 테이블에 파일 및 문서를 저장할 수 있지만 클라이언트 애플리케이션을 변경하지 않고 파일 시스템에 저장된 것처럼 Windows 애플리케이션에서 액세스할 수 있습니다.

FileTable 기능은 SQL Server FILESTREAM 기술을 기반으로 합니다. FILESTREAM에 대한 자세한 내용은 FILESTREAM(SQL Server)을 참조하세요.

FileTable 기능의 이점

FileTable 기능의 목표는 다음과 같습니다.

  • SQL Server 데이터베이스 내에 저장된 파일 데이터에 대한 Windows API 호환성을 제공합니다. Windows API 호환성은 다음과 같습니다.

    • FILESTREAM 데이터에 비트랜잭션 스트리밍 방식으로 액세스하여 해당 데이터를 현재 위치에서 업데이트할 수 있습니다.

    • 디렉터리 및 파일의 계층 구조 네임스페이스입니다.

    • 만든 날짜 및 수정된 날짜와 같은 파일 특성의 스토리지입니다.

    • Windows 파일 및 디렉터리 관리 API에 대한 지원.

  • FILESTREAM 및 파일 특성 데이터에 대한 관리 도구, 서비스 및 관계형 쿼리 기능을 비롯한 다른 SQL Server 기능과의 호환성.

따라서 FileTable은 현재 파일 서버의 파일로 상주하는 비정형 데이터의 스토리지 및 관리에 SQL Server를 사용하는 데 상당한 장벽을 제거합니다. 엔터프라이즈는 SQL Server에서 제공하는 통합 관리 및 서비스를 활용하기 위해 파일 서버에서 FileTable로 이 데이터를 이동할 수 있습니다. 동시에 해당 데이터를 파일 시스템의 파일로 표시하는 기존의 Windows 애플리케이션을 위해 Windows 애플리케이션 호환성을 유지할 수 있습니다.

FileTable이란 무엇일까요?

SQL Server는 Windows API 호환성 및 비 트랜잭션 액세스를 사용하여 데이터베이스의 파일 및 디렉터리 스토리지가 필요한 애플리케이션에 대해 FileTable이라고도 하는 특수 파일 테이블을 제공합니다. FileTable은 파일 및 디렉터리 계층 정보 및 파일 특성뿐만 아니라 FILESTREAM 데이터를 저장하는 미리 정의된 스키마가 있는 특수한 사용자 테이블입니다.

FileTable에서 제공하는 기능은 다음과 같습니다.

  • FileTable은 디렉터리 및 파일의 계층 구조를 나타냅니다. 디렉터리와 포함된 파일 모두에 대해 해당 계층의 모든 노드와 관련된 데이터를 저장합니다. 이 계층 구조는 FileTable을 만들 때 지정하는 루트 디렉터리에서 시작합니다.

  • FileTable의 각 행은 파일 또는 디렉터리 하나를 나타냅니다.

  • 모든 행에는 다음 항목이 포함됩니다. FileTable의 스키마에 대한 자세한 내용은 FileTable 스키마를 참조하세요.

    • 스트림 데이터 및 stream_id(GUID) 식별자에 대한 file_stream 열입니다. (file_stream 열은 디렉터리에 대한 NULL입니다.)

    • path_locatorparent_path_locator 열은 모두 현재 항목(파일 또는 디렉토리)과 디렉토리 계층을 나타내고 유지 관리합니다.

    • 파일 I/O API에 유용한 파일 작성 날짜 및 수정 날짜 같은 10개의 파일 특성

    • 파일 및 문서에 대한 전체 텍스트 검색 및 의미 체계 검색을 지원하는 형식 열입니다.

  • FileTable은 특정 시스템 정의 제약 조건 및 트리거를 적용하여 파일 네임스페이스 의미 체계를 유지 관리합니다.

  • 트랜잭션이 아닌 액세스를 위해 데이터베이스를 구성하면 FileTable에 표시되는 파일 및 디렉터리 계층이 SQL Server 인스턴스에 대해 구성된 FILESTREAM 공유 아래에 노출됩니다. 이렇게 하면 Windows 애플리케이션에 대한 파일 시스템 액세스가 제공됩니다.

FileTable의 일부 추가 특징

  • FileTable에 저장된 파일 및 디렉터리 데이터는 Windows API 기반 애플리케이션에 대한 비 트랜잭션 파일 액세스를 위해 Windows 공유를 통해 노출됩니다. Windows 애플리케이션의 경우 파일 및 디렉터리와 일반 공유처럼 보입니다. 애플리케이션은 풍부한 Windows API 집합을 사용하여 이 공유에서 파일 및 디렉터리를 관리할 수 있습니다.

  • 공유를 통해 표시되는 디렉터리 계층 구조는 FileTable 내에서 유지 관리되는 순수한 논리적 디렉터리 구조입니다.

  • Windows 공유를 통해 파일 또는 디렉터리를 만들거나 변경하는 호출은 SQL Server 구성 요소에 의해 가로채고 FileTable의 해당 관계형 데이터에 반영됩니다.

  • Windows API 작업은 기본적으로 트랜잭션이 아니며 사용자 트랜잭션과 연결되지 않습니다. 그러나 일반 테이블의 FILESTREAM 열과 마찬가지로 FileTable에 저장된 FILESTREAM 데이터에 대한 트랜잭션 액세스는 완전히 지원됩니다. 여러 연결에서 파일을 자주 수정하고 적절한 파일 보호를 보장해야 하는 경우 Windows API 수준에서 단독 파일 잠금이 아닌 OpenSqlFilestream()을 통해 트랜잭션 FILESTREAM 액세스를 사용합니다.

  • 일반적인 Transact-SQL 액세스를 통해 FileTable을 쿼리하고 업데이트할 수도 있습니다. 또한 FileTable은 SQL Server 관리 도구나 백업 등의 기능과 통합되어 있습니다.

  • 데이터베이스 메일 통해 이메일 요청을 보내고 FILESTREAM 디렉터리에 있는 파일(따라서 FileTable)을 첨부할 수 없습니다. 파일 시스템 필터 드라이버 RsFx0420은 FILESTREAM 폴더로 들어오고 나가는 들어오는 I/O 요청을 검사합니다. 요청이 SQLServer 실행 파일 및 FILESTREAM 코드에서 시작되지 않은 경우 해당 요청은 명시적으로 허용되지 않습니다.

FileTable 사용에 대한 추가 고려 사항

관리 고려 사항

FILESTREAM 및 FileTable

FILESTREAM과 별도로 FileTable을 구성합니다. 따라서 트랜잭션이 아닌 액세스를 사용하거나 FileTable을 만들지 않고 FILESTREAM 기능을 계속 사용할 수 있습니다.

FileTable을 통하지 않고 FILESTREAM 데이터에 비트랜잭션 방식으로 액세스할 수 있는 방법은 없습니다. 따라서 트랜잭션이 아닌 액세스를 사용하도록 설정하면 기존 FILESTREAM 열 및 애플리케이션의 동작은 영향을 받지 않습니다.

FileTable 및 비 트랜잭션 액세스 정보

데이터베이스 수준에서 비트랜잭션 액세스를 활성화하거나 비활성화할 수 있습니다.

데이터베이스 수준에서 비트랜잭션 액세스를 해제하거나 읽기 전용 또는 모든 읽기/쓰기 액세스를 허용하도록 설정하는 방법으로 비트랜잭션 액세스를 구성하거나 세부적으로 조정할 수 있습니다.

FileTable은 메모리 매핑된 파일을 지원하지 않음

FileTable은 메모리 매핑된 파일을 지원하지 않습니다. 메모장과 그림판이 메모리 매핑된 파일을 사용하는 애플리케이션 중 가장 일반적인 두 가지 예입니다. SQL Server와 동일한 컴퓨터에서 이러한 애플리케이션을 사용하여 FileTable에 저장된 파일을 열 수 없습니다. 그러나 원격 컴퓨터에서 이러한 애플리케이션을 사용하여 FileTable에 저장된 파일을 열 수 있습니다. 이러한 상황에서는 메모리 매핑 기능이 사용되지 않기 때문입니다.