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

ALTER FEDERATION(Azure SQL 데이터베이스)

업데이트 날짜: 2014년 4월

이 항목은 더 이상 사용되지 않습니다. SQL 14 Transact-SQL 참조(영문)에서 최신 버전을 찾을 수 있습니다. ALTER FEDERATION을 참조하십시오.

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

페더레이션 내의 데이터 배포를 수정합니다.

구문 표기 규칙(Azure SQL 데이터베이스)


ALTER FEDERATION federation_name
{
    SPLIT AT (distribution_name = boundary_value)
    | DROP AT ([LOW|HIGH] distribution_name = boundary_value)
}[;]

federation_name
만들 페더레이션의 이름입니다. 이 이름은 SQL 데이터베이스 내에서 고유하고 식별자 규칙을 따라야 하며 sysname 형식입니다.

distribution_name
페더레이션 키의 이름입니다. 이 이름은 페더레이션 키를 참조하는 데 사용되는 식별자이며, CREATE TABLE ?FEDERATED ON(...) 또는 USE FEDERATION과 같은 페더레이션 관련 문으로 참조됩니다. distribution_name은 식별자 규칙을 따라야 하며 sysname 형식입니다.

Boundary_value는 다시 분할 작업에 대한 분할 지점입니다. 경계 값은 페더레이션의 페더레이션 키로 지정된 데이터 형식에 올바른 값이어야 합니다. SPLIT의 경우 이 작업의 일부로 만들어진 새 페더레이션 멤버에 대한 값은 range_low 및 range_high가 됩니다.

SPLIT AT(distribution_name = boundary_value)
현재 경계 값을 포함하는 페더레이션 멤버의 데이터를 새로운 두 페더레이션 멤버로 이동합니다. 페더레이션 키 인스턴스가 경계 값보다 작은 페더레이션된 테이블의 모든 행이 새 대상 페더레이션 멤버 중 하나로 복사됩니다. 인스턴스가 경계 값보다 크거나 같은 행은 다른 새 페더레이션 멤버로 복사됩니다. 개체에 정의한 참조 테이블, 저장 프로시저, 함수, 사용자 및 권한 등 기타 모든 개체가 새 페더레이션 멤버에 복제됩니다.

DROP AT([LOW|HIGH] distribution_name = boundary_value)
페더레이션 멤버를 삭제하고 인접 페더레이션 멤버의 범위를 확장하여 DROP 작업으로 만들어진 간격을 메웁니다. 이 작업은 삭제될 페더레이션 멤버와 간격을 메우기 위해 확장될 인접 페더레이션 멤버에 영향을 줍니다. LOW 또는 HIGH는 지정된 페더레이션 boundary_value에서 삭제될 페더레이션 멤버를 결정합니다. 경계 값은 페더레이션의 기존 파티션 값(페더레이션 멤버의 range_high 또는 range_low)과 일치해야 합니다.

DROP 작업 중에는 영향을 받는 페더레이션 멤버 간의 스키마 비교가 수행되지 않습니다. DROP에는 데이터의 물리적 복사가 필요하지 않습니다. DROP 작업은 연결을 다시 설정하고 영향을 받는 페더레이션 멤버의 db_name()을 변경합니다.

DROP은 비동기 작업입니다.

SPLIT 작업의 속성

  • ALTER FEDERATION ?SPLIT 문은 일괄 처리의 유일한 문이어야 하며 외부 트랜잭션의 일부일 수 없습니다.

  • ALTER FEDERATION ?SPLIT 문은 페더레이션 루트 데이터베이스에 연결된 동안에만 실행될 수 있습니다.

  • 특정한 한 시점에 하나의 DROP 또는 SPLIT 명령만 영향을 받는 페더레이션 멤버에 대해 활성화될 수 있습니다. DROP 및 SPLIT 명령이 페더레이션의 다른 멤버에서 실행되는 동안에는 한 번에 모두 활성화되는 여러 DROP 및 SPLIT 명령이 있을 수 있습니다.

  • 모든 대상 페더레이션 멤버(SLIPT 작업으로 인해 만들어진 페더레이션 멤버)는 원본 페더레이션 멤버의 MAXSIZE 및 EDITION 속성을 상속합니다.

  • SPLIT 작업은 원자성 작업입니다. SPLIT이 완료되려면 모든 대상 멤버가 성공적으로 만들어지고 동기화되어야 합니다.

  • SPLIT 작업은 비동기 작업입니다.

    SPLIT이 실행되는 동안

    • 모든 일반(페더레이션되지 않은) 개체, 스키마 및 시스템 메타데이터가 SPLIT될 원본 페더레이션 멤버에서 대상 페더레이션 멤버로 복사됩니다. 이 목록에는 사용자, 역할, 개체 사용 권한, sproc, 뷰, 페더레이션된 테이블 또는 참조 테이블, 인덱스 등이 포함됩니다. 유일한 예외는 다시 계산하도록 표시된 배포 통계입니다. NORECOMPUTE로 표시된 통계는 다시 분할 작업 후 유지되며 페더레이션된 테이블에 대해 다시 계산되지 않습니다.

    • 모든 페더레이션된 테이블 스키마가 SPLIT될 원본 페더레이션 멤버에서 대상 페더레이션 멤버로 복사됩니다.

    • 페더레이션된 테이블의 사용자 데이터가 경계 값을 기반으로 대상 페더레이션 멤버로 이동합니다.

    • 모든 참조 테이블의 사용자 데이터는 복제된 다음 대상 페더레이션 멤버로 이동합니다.

    SPLIT이 완료되면

    • 새 페더레이션 멤버에 해당 대상 페더레이션 멤버의 모든 최신 데이터가 포함되어 있습니다.

    • sys.federation_members 뷰는 범위 값과 함께 새 대상 페더레이션 멤버를 포함하도록 업데이트됩니다. 원본 페더레이션 멤버가 삭제되고 sys.databases 또는 sys.federation_members에 더 이상 존재하지 않습니다.

    • 원본 페더레이션 멤버에 대한 모든 기존 연결이 해제됩니다. 다시 시도하면 새 페더레이션 멤버에 대해 새 연결이 라우팅됩니다.

DROP 작업의 속성

  • ALTER FEDERATION ?DROP 문은 일괄 처리의 유일한 문이어야 하며 외부 트랜잭션의 일부일 수 없습니다.

  • ALTER FEDERATION ?DROP 문은 페더레이션 루트 데이터베이스에 연결된 동안에만 실행될 수 있습니다.

  • 지정한 경계 값은 페더레이션의 기존 범위 경계(range_high, range_low)에 해당해야 합니다.

  • DROP 작업은 비동기 작업입니다.

    DROP 작업이 시작되면 LOW 또는 HIGH 옵션과 지정한 경계 값은 삭제될 페더레이션 멤버를 결정합니다. 삭제된 페더레이션 멤버의 범위를 메우도록 인접 페더레이션 멤버의 범위가 확장됩니다.

    DROP이 실행되는 동안에는 데이터 전송이 수행되지 않으며 스키마 비교가 발생하지 않습니다.

    DROP이 완료되면

    • 나머지 페더레이션 멤버의 이름이 바뀝니다.

    • sys.federation_members에는 삭제된 페더레이션 멤버가 더 이상 포함되지 않으며 나머지 페더레이션 멤버의 업데이트된 범위가 포함됩니다.

    • 페더레이션 멤버에 대한 모든 기존 연결이 해제됩니다. 삭제된 페더레이션 멤버는 더 이상 연결을 받아들이지 않습니다. 나머지 페더레이션 멤버는 모든 기존 연결을 끊습니다.

페더레이션 작업에 대한 보안 고려 사항

페더레이션을 CREATE, ALTER 및 DROP하려면 페더레이션 루트에 연결되어야 하고 서버에서 dbmanager 역할의 멤버여야 합니다. 또한 데이터베이스에 대한 dbo 그룹의 멤버여야 합니다.

SPLIT 및 DROP 문을 실행하려면 원본 페더레이션 멤버 및 연결된 서버에서 CREATE 및 DROP DATABASE 권한이 있어야 합니다. Microsoft Azure SQL 데이터베이스에서 이는 dbmanager 서버 역할의 멤버로만 제한됩니다. 작업을 실행하는 사용자 계정에 관계없이 원본 페더레이션 멤버의 소유자는 대상 페더레이션 멤버의 소유자가 됩니다.

SPLIT 및 DROP 작업의 동시성

원본 또는 대상 페더레이션 멤버가 겹치지 않는 한 여러 DROP 또는 SPLIT 작업이 동시에 실행될 수 있습니다.

  • DROP AT(LOW distribution_name = boundary_value)

    페더레이션 멤버를 경계 값의 LOW까지 삭제하고 인접 페더레이션 멤버를 경계 값의 HIGH까지 확장합니다. 예를 들어, 0,100(db1), 100,200(db2) 및 200,300(db3)을 담당하는 세 페더레이션 멤버가 포함된 페더레이션(fed1)이 있는 경우 ALTER FEDERATION fed1 DROP AT(LOW customer_id=200)을 실행하면 다음이 수행됩니다.

    1. db2 및 100,200 사이의 모든 데이터가 DROP됩니다.

    2. db3의 이름이 db4로 바뀝니다. db4의 Dbid는 동일하게 유지됩니다.

    3. db4가 이제 100,300 범위를 담당합니다.

  • DROP AT(HIGH distribution_name = boundary_value)

    페더레이션 멤버를 경계 값의 HIGH까지 삭제하고 페더레이션 멤버를 경계 값의 LOW까지 확장합니다. 예를 들어, 0,100(db1), 100,200(db2) 및 200,300(db3)을 담당하는 세 페더레이션 멤버가 포함된 페더레이션(fed1)이 있는 경우 ALTER FEDERATION fed1 DROP AT(HIGH customer_id=200)을 실행하면 다음이 수행됩니다.

    1. db3 및 200,300 사이의 모든 데이터가 DROP됩니다.

    2. db2의 이름이 db4로 바뀝니다. db4의 Dbid는 db2와 동일하게 유지됩니다.

    3. db4가 이제 100,300 범위를 담당합니다.

표시:
© 2014 Microsoft