다른 SQL Server 기능과 함께 FILESTREAM 사용

FILESTREAM 데이터는 파일 시스템에 있으므로 이 항목에서는 SQL Server의 다음 기능과 함께 FILESTREAM을 사용할 경우 몇 가지 고려 사항, 지침 및 제한 사항에 대해 설명합니다.

  • 데이터베이스 스냅숏

  • 복제

  • 로그 전달

  • 데이터베이스 미러링

  • 전체 텍스트

  • 장애 조치(Failover) 클러스터링

  • SQL Server Express

데이터베이스 스냅숏

SQL Server에서는 FILESTREAM 파일 그룹에 대해 데이터베이스 스냅숏을 지원하지 않습니다. FILESTREAM 파일 그룹이 CREATE DATABASE ON 절에 들어 있으면 이 문이 실패하고 오류가 발생합니다.

FILESTREAM을 사용할 경우 FILESTREAM이 아닌 표준 파일 그룹의 데이터베이스 스냅숏을 만들 수 있습니다. FILESTREAM 파일 그룹은 이러한 데이터베이스 스냅숏에 대해 오프라인으로 표시됩니다.

데이터베이스 스냅숏의 FILESTREAM 테이블에서 실행되는 SELECT 문에는 FILESTREAM 열이 포함되지 않아야 합니다. 이 열이 포함되면 다음 오류 메시지가 반환됩니다.

데이터 이동으로 인해 NOLOCK으로 계속 검색할 수 없습니다.

복제

게시자에서 FILESTREAM 특성을 사용할 수 있는 varbinary(max) 열을 FILESTREAM 특성을 사용하거나 사용하지 않고 구독자로 복제할 수 있습니다. 열을 어떻게 복제할지 지정하려면 아티클 속성 - <Article> 대화 상자를 사용하거나 sp_addarticle 또는 sp_addmergearticle@schema\_option 매개 변수를 사용합니다. 스키마 옵션을 설정하는 방법은 방법: 스키마 옵션 지정(SQL Server Management Studio)방법: 스키마 옵션 지정(복제 Transact-SQL 프로그래밍)을 참조하십시오. FILESTREAM 특성이 없는 varbinary(max) 열에 복제된 데이터는 해당 데이터 형식에 대해 2GB 제한을 초과할 수 없습니다. 초과할 경우 런타임 오류가 발생합니다. 데이터를 SQL Server 2005에 복제하는 경우가 아니면 FILESTREAM 특성을 복제하는 것이 좋습니다. FILESTREAM 열이 있는 테이블은 지정된 스키마 옵션에 상관없이 SQL Server 2000 구독자에 복제할 수 없습니다. 이전 버전의 SQL Server에 데이터를 복제하는 방법은 복제 토폴로지에 SQL Server의 여러 버전 사용을 참조하십시오.

[!참고]

SQL Server 2008에서 SQL Server 2005 구독자로 대형 데이터 값을 복제하면 최대 256MB 데이터 값으로 제한됩니다. 자세한 내용은 SQL Server 2005의 최대 용량 사양을 참조하십시오.

트랜잭션 복제에 대한 고려 사항

트랜잭션 복제를 위해 게시된 테이블의 FILESTREAM 열을 사용할 경우 다음 사항을 고려하십시오.

  • FILESTREAM 특성을 포함하는 열이 테이블에 있으면 sp_addpublication@sync\_method 속성에 database snapshot 또는 database snapshot character 값을 사용할 수 없습니다.

  • max text repl size 옵션은 복제를 위해 게시된 열에 삽입할 수 있는 데이터의 최대 크기를 지정합니다. 이 옵션을 사용하여 복제되는 FILESTREAM 데이터의 크기를 제어할 수 있습니다. 자세한 내용은 max text repl size 옵션을 참조하십시오.

  • 스키마 옵션을 지정하여 FILESTREAM 특성을 복제할 때 FILESTREAM에 필요한 uniqueidentifier 열을 필터링하거나 해당 열에 대한 UNIQUE 제약 조건을 복제하지 않도록 지정하면 복제가 FILESTREAM 특성을 복제하지 않습니다. 열은 varbinary(max) 열로만 복제됩니다.

병합 복제에 대한 고려 사항

병합 복제를 위해 게시된 테이블에서 FILESTREAM 열을 사용할 경우 다음 사항을 고려하십시오.

  • 병합 복제 및 FILESTREAM은 테이블의 각 행을 식별하는 데 uniqueidentifier 데이터 형식의 열을 필요로 합니다. 병합 복제 시 테이블에 이러한 열이 없으면 자동으로 열이 추가됩니다. 병합 복제를 수행하려면 열에는 ROWGUIDCOL 속성 집합과 NEWID() 또는 NEWSEQUENTIALID()의 기본값이 있어야 합니다. 또한 FILESTREAM의 경우에는 열에 대해 UNIQUE 제약 조건이 정의되어야 합니다. 결과적으로 다음과 같은 작업이 필요합니다.

    • 병합 복제를 위해 이미 게시된 테이블에 FILESTREAM 열을 추가할 경우 uniqueidentifier 열에 UNIQUE 제약 조건이 있는지 확인합니다. UNIQUE 제약 조건이 없을 경우 게시 데이터베이스의 테이블에 명명된 제약 조건을 추가합니다. 기본적으로 병합 복제에서는 이러한 스키마 변경을 게시하고 각 구독 데이터베이스에 적용합니다. 스키마 변경에 대한 자세한 내용은 게시 데이터베이스의 스키마 변경을 참조하십시오.

      설명한 대로 UNIQUE 제약 조건을 수동으로 추가하고 병합 복제를 제거하려면 먼저 UNIQUE 제약 조건부터 제거해야 합니다. 그렇지 않으면 복제 제거가 실패합니다.

    • NEWSEQUENTIALID()가 NEWID()보다 성능이 더 좋으므로 병합 복제에서는 기본적으로 NEWSEQUENTIALID()를 사용합니다. 병합 복제를 위해 게시될 테이블에 uniqueidentifier 열을 추가할 경우 NEWSEQUENTIALID()를 기본값으로 지정합니다.

  • 병합 복제에는 큰 개체 유형을 위한 최적화가 포함됩니다. 이 최적화 작업은 sp_addmergearticle@stream\_blob\_columns 매개 변수를 통해 제어됩니다. FILESTREAM 특성을 복제하도록 스키마 옵션을 설정하면 @stream\_blob\_columns 매개 변수 값이 true로 설정됩니다. 이러한 최적화 작업은 sp_changemergearticle을 사용하여 덮어쓸 수 있습니다. 이 저장 프로시저를 사용하여 @stream\_blob\_columns를 false로 설정할 수 있습니다. 병합 복제를 위해 이미 게시된 테이블에 FILESTREAM 열을 추가하는 경우 sp_changemergearticle을 사용하여 옵션을 true로 설정하는 것이 좋습니다.

  • 아티클이 만들어진 후 FILESTREAM의 스키마 옵션을 사용하면 FILESTREAM 열의 데이터가 2GB가 넘고 복제 도중 충돌이 있을 경우 복제에 실패할 수 있습니다. 이러한 상황의 발생을 예상할 경우 만들 때 사용할 수 있는 적절한 FILESTREAM 스키마 옵션을 사용하여 테이블 아티클을 삭제하고 다시 만드는 것이 좋습니다.

  • 병합 복제는 웹 동기화를 사용하여 HTTPS 연결을 통해 FILESTREAM 데이터를 동기화할 수 있습니다. 이 데이터는 웹 동기화에 대해 50MB 제한을 초과할 수 없습니다. 초과할 경우 런타임 오류가 발생합니다.

로그 전달

로그 전달은 FILESTREAM을 지원합니다. 주 서버 및 보조 서버는 모두 SQL Server 2008 이상 버전을 실행해야 하고 FILESTREAM이 설정되어 있어야 합니다.

데이터베이스 미러링

데이터베이스 미러링은 FILESTREAM을 지원하지 않습니다. 주 서버에서 FILESTREAM 파일 그룹을 만들 수 없습니다. FILESTREAM 파일 그룹이 포함된 데이터베이스에 대해 데이터베이스 미러링을 구성할 수 없습니다.

전체 텍스트 인덱싱

전체 텍스트 인덱싱은 varbinary(max) 열과 함께 작동하는 것과 동일한 방식으로 FILESTREAM 열과 함께 작동합니다. FILESTREAM 테이블에는 각 FILESTREAM BLOB에 대한 파일 이름 확장명을 포함하는 열이 있어야 합니다. 자세한 내용은 varbinary(max) 및 xml 열 쿼리(전체 텍스트 검색), 전체 텍스트 검색 필터,전체 텍스트 인덱싱 및 쿼리 프로세스sys.fulltext_document_types(Transact-SQL)를 참조하십시오.

전체 텍스트 엔진은 FILESTREAM BLOB의 내용을 인덱싱합니다. 이미지와 같은 인덱싱 파일은 유용하지 않을 수도 있습니다. FILESTREAM BLOB가 업데이트되면 인덱스가 다시 작성됩니다.

장애 조치(Failover) 클러스터링

장애 조치(failover) 클러스터링의 경우 FILESTREAM 파일 그룹이 공유 디스크에 있어야 합니다. FILESTREAM은 FILESTREAM 인스턴스를 호스팅할 클러스터의 각 노드에 설정되어 있어야 합니다. 자세한 내용은 방법: 장애 조치(Failover) 클러스터에서 FILESTREAM 설정을 참조하십시오.

SQL Server Express

SQL Server Express에서는 FILESTREAM을 지원합니다. 4GB의 데이터베이스 크기 제한에는 FILESTREAM 데이터 컨테이너가 포함되지 않습니다.

참고 항목

관련 자료