내보내기(0) 인쇄
모두 확장

페더레이션 지침 및 제한 사항

업데이트 날짜: 2014년 4월

이 항목에서는 Microsoft Azure SQL 데이터베이스의 페더레이션에 대한 지침과 제한 사항에 대해 설명합니다. 다음 섹션에서는 일반적인 지침과 제한 사항을 다룹니다.

Important중요
현재 페더레이션 구현은 Web 및 Business와 함께 사용이 중지될 예정입니다. 확장성, 유동성 및 성능을 최대화하려면 사용자 지정 분할 솔루션을 배포하는 것이 좋습니다. 사용자 지정 분할에 대한 자세한 내용은 Azure SQL 데이터베이스 확장을 참조하십시오.

테이블

페더레이션에는 페더레이션된 테이블과 참조 테이블이 둘 다 포함될 수 있습니다. 페더레이션된 테이블은 FEDERATED ON 절을 사용하여 만들어진 테이블이며 포함하는 페더레이션의 배포 키와 연결된 열을 포함합니다. 참조 테이블은 FEDERATED ON 절을 사용하여 만들어지지 않은 페더레이션 내의 테이블이며 페더레이션 배포 키와 특별히 연결되어 있지 않습니다. 테이블을 만드는 방법에 대한 자세한 내용은 CREATE TABLE을 참조하십시오.

페더레이션된 테이블

페더레이션된 테이블의 제한 사항은 다음과 같습니다.

  • 페더레이션된 테이블의 페더레이션 열에는 페더레이션 멤버 range_low(포함) 및 range_high(제외)를 따르는 데이터만 포함될 수 있습니다.

  • 페더레이션 열의 데이터 형식은 페더레이션 정의에 정의된 데이터 형식과 정확히 일치해야 합니다.

  • 페더레이션된 테이블의 모든 고유 인덱스 및 클러스터형 인덱스에는 페더레이션 열이 포함되어야 합니다. 페더레이션 열이 인덱스에 나타나는 순서는 페더레이션의 키 서수와 다를 수 있습니다.

  • 페더레이션 열 값은 페더레이션 멤버 범위 외부의 값으로 업데이트할 수 없습니다.

  • 페더레이션 열은 지속형 또는 비지속형 계산 열일 수 없습니다.

  • 인덱싱된 뷰는 페더레이션 멤버에서 지원되지 않습니다.

  • 페더레이션 열에는 Null이 허용되지 않습니다.

  • 페더레이션된 테이블에 대한 모든 FOREIGN KEY 제약 조건에는 외래 키의 동일한 서수 위치에 있는 참조 테이블과 참조된 테이블의 페더레이션 열이 포함되어야 합니다. 참조 테이블은 페더레이션된 테이블과 외래 키 관계를 맺을 수 없습니다. 페더레이션된 테이블은 제한 없이 참조 테이블과 외래 키 관계를 맺을 수 있습니다.

  • 일반적으로 FEDERATED ON 절을 사용하여 만든 테이블을 삭제할 수 있습니다. ALTER TABLE을 사용하여 페더레이션 키와 같은 페더레이션 특성을 제외하고 페더레이션된 테이블의 모든 속성을 변경할 수 있습니다. 참조 테이블을 페더레이션된 테이블로 변경하거나 페더레이션된 테이블을 참조 테이블로 변경하려면 원하는 속성이 포함된 새 테이블을 만들고 기존 테이블을 삭제해야 합니다.

  • 테이블이 STATISTICS_NORECOMPUTE로 표시된 경우 SPLIT과 같은 페더레이션 작업은 통계를 무효화하거나 다시 계산하지 않습니다. 이에 따라 SPLIT 등의 다시 분할 작업 후에는 실행 계획 문제가 발생할 수 있습니다.

  • 페더레이션된 멤버는 ID 속성을 지원하지 않습니다.

  • 페더레이션된 멤버는 timestamp 및 rowversion 데이터 형식을 지원하지 않습니다.

페더레이션된 테이블에 대한 일반적인 모든 테이블 메타데이터는 표준 시스템 뷰를 통해 사용할 수 있습니다. 페더레이션 관련 속성은 sys.federated_table_columns를 통해 사용할 수 있습니다.

참조 테이블

참조 테이블은 모든 페더레이션 멤버에 자동으로 배포되지 않습니다. 참조 테이블이 페더레이션 멤버에 수동으로 복제될 수 있지만 자동 복제 프로세스는 없습니다.

참조 테이블에는 흔히 페더레이션된 테이블에 대한 쿼리의 지원 정보가 포함되므로 여러 데이터베이스에 대해 쿼리를 수행할 필요가 없습니다. 예를 들어 고객 정보가 페더레이션되고 여러 멤버 데이터베이스에 배포될 수 있지만 페더레이션 상태와 우편 번호 참조 정보에서 얻을 수 있는 것은 없습니다. 그러나 쿼리가 여러 데이터베이스를 걸칠 필요가 없도록 페더레이션 상태와 우편 번호 정보의 복사본을 각 페더레이션 멤버에 저장할 수 있습니다.

공간 지원

geography 및 geometry 형식은 테이블이 페더레이션되는 열의 데이터 형식으로 사용할 수 없지만 페더레이션된 테이블의 일부일 수 있습니다. 페더레이션과 함께 공간 데이터를 사용하는 경우 다른 제한 사항은 없습니다.

SPLIT 또는 DROP 작업 후에 공간 인덱스는 대상 페더레이션 멤버에서 변경되지 않고 일관되게 유지됩니다.

계층적 데이터

hierarchyid 형식은 테이블이 페더레이션되는 열의 데이터 형식으로 사용할 수 없지만 페더레이션된 테이블의 일부일 수 있습니다. 페더레이션과 함께 hierarchyid를 사용하는 경우 다른 제한 사항은 없습니다.

SPLIT 또는 DROP 작업 후에 hierarchyid 인덱스는 대상 페더레이션 멤버에서 변경되지 않고 일관되게 유지됩니다.

페더레이션 멤버에 연결

USE FEDERATION 문을 통해 페더레이션에 연결합니다. 이 문은 자동으로 페더레이션 내의 올바른 멤버로 연결을 라우팅하므로 데이터에 액세스할 때 물리적 데이터베이스 이름을 몰라도 됩니다. 페더레이션 배포 키와 값을 지정하면 페더레이션 내의 해당 멤버 데이터베이스에 대한 연결이 설정됩니다.

보안 주체

페더레이션이 포함된 데이터베이스에 대한 인증과 권한 부여는 일반적인 방식과 동일하게 수행됩니다. 로그인과 사용자에 따라 연결이 결정되며 역할은 보안 주체의 그룹을 관리합니다. 그러나 페더레이션이 포함된 데이터베이스 내의 보안 주체는 페더레이션 루트 데이터베이스로 한정되며 페더레이션 멤버에 자동으로 적용되지 않습니다. 사용자 및 역할에 대한 자세한 내용은 데이터베이스 페더레이션 관리(Azure SQL 데이터베이스)를 참조하십시오.

복사 작업

데이터베이스 복사는 페더레이션이 포함된 데이터베이스에 대해 수행될 수 없습니다. 데이터베이스 복사 작업이 데이터베이스에서 활성화된 경우 페더레이션을 만들 수 없습니다. 페더레이션 멤버에 대해서도 데이터베이스 복사를 수행할 수 없습니다.

데이터베이스 크기 할당량

페더레이션 작업은 페더레이션 루트 할당량에 적용되지 않습니다. 루트 데이터베이스가 할당량을 초과하는 경우 여전히 SPLITDROP 작업을 수행할 수 있습니다. 마찬가지로, 페더레이션 멤버에 대한 크기 할당량이 초과되는 경우 대상 데이터베이스의 할당량이 SPLIT 및 DROP 작업에 의해 초과되지 않는 한 이러한 작업을 계속 수행할 수 있습니다.

연결 및 Transact-SQL 속성

SPLITDROP과 같은 다시 분할 작업이 완료되면 연결이 삭제됩니다. 즉, 변수, 트랜잭션 격리 수준 설정 또는 SET 옵션과 같은 연결 속성도 다시 설정됩니다. SPLIT 작업은 물리적 데이터베이스를 새로 만듭니다. 즉, 다음 Transact-SQL 속성은 SPLIT 작업에서 유지될 수 없습니다.

 

Transact-SQL SQL 데이터베이스 지원 제한 사항 페더레이션이 포함된 데이터베이스의 지원

timestamp 및 rowversion 데이터 형식

SQL 데이터베이스에서는 장애 조치(failover) 중에 현재 데이터베이스(DBTS)의 커밋되지 않은 timestamp 및 rowversion 값을 보존하지 않을 수 있습니다.

timestamp 및 rowversion 데이터 형식은 페더레이션 멤버에서 지원되지 않습니다.

@@dbts와 같은 timestamp 및 rowversion 관련 함수는 지정된 데이터베이스에 timestamp 및 rowversion이 없는 경우 값을 반환합니다.

SYSUTCDATETIME(),SYSDATETIMEOFFSET(),SYSDATETIME(),getdate(), getutcdate()current_timestamp

SQL 데이터베이스에서는 로컬 컴퓨터에서 timestamp 및 rowversion을 보고할 수 있으며 장애 조치(failover) 중에 더 이후이거나 이전인 시간을 보고할 수 있습니다.

다시 분할 작업에서 동일한 제약 조건으로 지원됩니다.

DATABASE_PRINCIPAL_ID()

보안 주체 SID는 지정된 보안 주체 이름에 대한 페더레이션 멤버 및 페더레이션 루트에서 동일하도록 보장됩니다. 그러나 보안 주체 ID는 DROP과 같은 다시 분할 작업 후 변경될 수 있습니다.

열의 IDENTITY 속성

IDENTITY 속성은 페더레이션 멤버에서 지원되지 않습니다. ID 열은 페더레이션 멤버에서 존재할 수 없으므로 IDENT_CURRENT, IDENT_SEED, IDENT_INCR, SCOPE_IDENTITY 등의 ID 관련 함수는 항상 null을 반환합니다.

OBJECT_ID 및 사용자 정의 개체와 작동하는 관련 함수: object_id(?, object_name(object_id), type_id(?, type_name(type_id)

DROP과 같은 다시 분할 작업 후 사용자 정의 개체의 object_id가 변경될 수 있습니다.

페더레이션이 포함된 데이터베이스 변경

모든 Azure SQL 데이터베이스 데이터베이스 설정이 지원되지만 페더레이션 루트 데이터베이스의 옵션 값을 변경하는 경우 페더레이션 멤버의 해당 옵션이 변경되지 않습니다.

참고 항목

커뮤니티 추가 항목

추가
표시:
© 2014 Microsoft