KB3177838-DBCC CLONEDATABASE를 사용 하 여 스키마 및 통계를 생성 하는 방법 SQL Server의 사용자 데이터베이스 복사본만

요약

이 업데이트는 Windows의 SQL Server 2017 ( Sql server 2012 용 서비스 팩 4,Microsoft Sql Server 2014 서비스 팩 2sql server 2016 SP1)에 대 한 새로운 관리 명령 DBCC CLONEDATABASE (transact-sql)를 도입 합니다. 이 명령은 지정 된 원본 데이터베이스의 모든 개체와 통계의 스키마를 포함 하는 새 데이터베이스를 만듭니다. 

참고 SQL Server 2014 환경에서는 Filestream, FileTable 및 CLR (공용 언어 런타임) 개체를 복제 하 고 DBCC를 사용 하 여 NO_STATISTICS 옵션을 사용 하 여 복제할 수 있는 기능을 얻으려면 Sql server 2014 SP2 용 누적 업데이트 3 을 설치 해야 합니다.

SQL Server 용 서비스 팩 정보

 

서비스 팩은 누적 됩니다. 새로운 각 서비스 팩에는 이전 서비스 팩의 모든 수정 프로그램과 함께 새로운 수정 프로그램이 포함 되어 있습니다. 최신 서비스 팩과 해당 서비스 팩에 대 한 최신 누적 업데이트를 적용 하는 것이 좋습니다. 최신 서비스 팩을 설치 하기 전에 이전 서비스 팩을 설치할 필요가 없습니다. 최신 서비스 팩 및 최신 누적 업데이트에 대 한 자세한 정보를 보려면 다음 문서의 표 1을 사용 하세요.

SQL Server 및 해당 구성 요소의 버전, 버전, 업데이트 수준을 확인 하는 방법

DBCC CLONEDATABASE 정보

Microsoft 고객 지원 서비스는 쿼리 최적화 프로그램과 관련 된 성능 문제를 조사 하기 위해 DBCC CLONEDATABASE 를 사용 하 여 데이터베이스 복제를 생성 하도록 요청할 수 있습니다.참고 DBCC CLONEDATABASE 에서 생성 되는 새로 생성 된 데이터베이스는 프로덕션 데이터베이스로 사용할 수 없으며 주로 문제 해결 및 진단 목적으로 고안 되었습니다. 데이터베이스를 만든 후 복제 된 데이터베이스를 분리 하는 것이 좋습니다. 원본 데이터베이스의 복제는 다음 작업을 통해 수행 됩니다.

  • 원본과 동일한 파일 레이아웃을 사용 하지만 기본 파일 크기를 model 데이터베이스로 갖는 새 대상 데이터베이스를 만듭니다.

  • 원본 데이터베이스의 내부 스냅숏을 만듭니다.

  • 원본에서 대상 데이터베이스로 시스템 메타 데이터를 복사 합니다.

  • 원본에서 모든 개체에 대 한 모든 스키마를 대상 데이터베이스로 복사 합니다.

  • 원본에서 대상 데이터베이스로 모든 인덱스에 대 한 통계를 복사 합니다.

구문과

DBCC CLONEDATABASE (source_database_name, target_database_name)[WITH [NO_STATISTICS][,NO_QUERYSTORE]] 

인수

  • source_database_name이 인수는 스키마와 통계를 복사 해야 하는 데이터베이스의 이름입니다.

  • target_database_name이 인수는 원본 데이터베이스의 스키마와 통계가 복사 될 데이터베이스의 이름입니다. 이 데이터베이스는 DBCC CLONEDATABASE 에서 생성 되며 아직 존재 하지 않아야 합니다.

  • NO_STATISTICS이 인수는 테이블/인덱스 통계를 복제에서 제외 해야 하는지 여부를 지정 합니다. 이 옵션을 지정 하지 않으면 테이블/인덱스 통계가 자동으로 포함 됩니다. 이 옵션은 SQL Server 2014 SP2 CU3 이상 및 SQL Server 2016 서비스 팩 1부터 시작 하 여 사용할 수 있습니다.

  • NO_QUERYSTORE이 인수는 쿼리 저장소를 복제본에서 제외 해야 하는지 여부를 지정 합니다. 이 옵션을 지정 하지 않으면 원본 데이터베이스에서 쿼리 저장소 데이터를 사용할 수 있는 경우 해당 복사본을 복제본에 복사 합니다. 이 옵션은 SQL Server 2016 서비스 팩 1부터 사용할 수 있습니다.

DBCC CLONEDATABASE를 사용 하는 경우

DBCC CLONEDATABASE 는 쿼리 성능 문제를 조사 하기 위해 프로덕션 데이터베이스의 스키마 및 통계만을 만드는 데 사용 해야 합니다. 다음과 같은 제한 사항 및 지원 되는 개체에 유의 해야 합니다.

  • 사항이DBCC CLONEDATABASE에서 다음 유효성 검사를 수행 합니다. 유효성 검사에 실패 하면 명령이 실패 합니다.

    • 원본 데이터베이스는 사용자 데이터베이스 여야 합니다. 시스템 데이터베이스 (master, model, msdb, tempdb, 배포 데이터베이스 등) 복제는 허용 되지 않습니다.

    • 원본 데이터베이스는 온라인 상태 이거나 읽을 수 있어야 합니다.

    • 복제 데이터베이스와 동일한 이름을 사용 하는 데이터베이스가 이미 존재 하지 않아야 합니다.

    • 명령이 사용자 트랜잭션에 없습니다.

    모든 유효성 검사가 성공한 경우 DBCC CLONEDATABASE 는 다음 작업을 실행 합니다.

    • 기본 데이터 파일 및 로그 파일 만들기

    • 보조 dataspaces 추가

    • 보조 파일 추가

    참고 대상 데이터베이스의 모든 파일은 model 데이터베이스의 크기 및 증가 설정을 상속 합니다. 파일 이름 규칙: 대상 데이터베이스의 파일 이름은 source_file_name _underscore_random 번호 규칙을 따릅니다. 생성 된 파일 이름이 대상 폴더에 이미 있는 경우 DBCC CLONEDATABASE 가 실패 합니다.

  • 내부 데이터베이스 스냅샷DBCC CLONEDATABASE 는 복사본을 수행 하는 데 필요한 트랜잭션 일관성을 위해 원본 데이터베이스의 내부 데이터베이스 스냅샷을 사용 합니다. 이렇게 하면 이러한 명령이 실행 될 때 블로킹 및 동시성 문제를 방지할 수 있습니다. 스냅숏을 만들 수 없는 경우에는 DBCC CLONEDATABASE 가 실패 합니다. 복사 프로세스의 다음 단계 중에 데이터베이스 수준 잠금이 유지 됩니다.

    • 원본 데이터베이스의 유효성 검사

    • 원본 데이터베이스에 대 한 S 잠금 가져오기

    • 원본 데이터베이스의 스냅숏 만들기

    • 복제 데이터베이스 만들기 (모델에서 상속 하는 빈 데이터베이스)

    • 복제 데이터베이스에 대 한 X 잠금 가져오기

    • 복제 데이터베이스에 메타 데이터 복사

    • 모든 DB 잠금 해제

    명령의 실행이 완료 되 면 내부 스냅샷이 삭제 됩니다. 복제 된 데이터베이스에서 신뢰할 수 있는 DB_CHAINING 옵션이 해제 되어 있습니다.

지원 되는 개체

다음 개체 스키마만 대상 데이터베이스에서 복제 됩니다. 암호화 된 개체는 복제 되지만이 SQL Server 릴리스의 복제에서는 지원 되지 않습니다. 복제 된 다음 섹션에 나열 되지 않은 개체는 지원 되지 않습니다.

  • 응용 프로그램 역할

  • 가용성 그룹

  • COLUMNSTORE 인덱스

  • CDB

  • C

  • 변경 내용 추적 (SQL SERVER 2016 SP2 CU10, SQL server 2017 CU17, SQL server 2019 CU1 이상 버전)

  • CLR (SQL Server 2014 SP2 CU3 이상, SQL Server 2016 서비스 팩 1 이상 버전 시작)

  • 데이터베이스 속성

  • 기본값

  • 파일 및 파일 그룹

  • 전체 텍스트 (SQL Server 2016 SP1 CU2 시작)

  • 함수나

  • 색인

  • 로그인

  • PARTITION 함수

  • 파티션 구성표

  • 절차 참고 T-sql 프로시저는 SQL Server 2014 SP2를 시작 하는 모든 릴리스에서 지원 됩니다. CLR 프로시저는 SQL Server 2014 SP2 CU3 이상를 시작 하는 것으로 지원 됩니다. SQL Server 2016 SP1을 시작 하면 기본적으로 컴파일된 절차가 지원 됩니다.

  • 쿼리 저장소 (SQL Server 2016 서비스 팩 1 이상 버전 에서만 가능) 참고 쿼리 저장소는 원본 데이터베이스에서 사용 하도록 설정 된 경우에만 복사 됩니다. 쿼리 저장소의 일부로 최신 런타임 통계를 복사 하려면 DBCC CLONEDATABASE를 실행 하기 전에 sp_query_store_flush_db 를 실행 하 여 런타임 통계를 쿼리 저장소에 플러시합니다.

  • 역할인

  • 노트

  • 스키마

  • 차례로

  • 공간 인덱스

  • 통계

  • 동의어가

  • 테이블로

  • 메모리에 최적화 된 테이블 (SQL Server 2016 SP1 이상 버전 에서만 가능)

  • FILESTREAM 및 FILETABLE 개체 (SQL Server 2014 SP2 CU3 이상, SQL Server 2016 SP1 이상 버전)

  • 유발

  • 입력할

  • 업그레이드 된 DB

  • 클릭할

  • 보려고

  • XML 인덱스

  • XML 스키마 컬렉션

 

필요한

Sysadmin 고정 서버 역할의 구성원 자격이 필요 합니다.

제한 사항 및 고려 사항

모델 데이터베이스에서 만든 사용자 개체 (테이블, 인덱스, 스키마, 역할 등)가 있는 경우에는 DBCC CLONEDATABASE에서 클론 만들기가 지원 되지 않습니다. 사용자 개체가 모델 데이터베이스에 있는 경우 데이터베이스 클론에 실패 하 고 다음 오류 메시지가 표시 됩니다.

메시지 2601, 수준 14, 상태 1, 줄 1은 개체 <시스템 테이블> 고유 인덱스 ' 인덱스 이름 '이 있는 중복 키 행을 삽입할 수 없습니다. 중복 키 값은 키 값<>   

복제 된 데이터베이스의 데이터 보안에 대 한 자세한 내용은 다음 블로그를 참조 하세요.복제 된 데이터베이스의 데이터 보안 이해

열 저장소 인덱스가 있는 경우복제 데이터베이스에서 columnstore 인덱스를 사용 하 여 쿼리를 튜닝할 때의 고려 사항: DBCC CLONEDATABASE 명령을 실행 하기 전에 columnstore 인덱스 통계를 업데이트 하세요.

오류 로그 메시지

복제 프로세스 동안 오류 로그에 다음 메시지가 기록 됩니다.

<Timestamp> spid53 ' sourcedb '에 대 한 데이터베이스 복제는 ' sourcedb_clone ' (으)로 대상으로 시작 되었습니다. <timestamp> spid53 ' sourcedb_clone '이 (가) 시작 됩니다. <타임 스탬프> 데이터베이스 ' Sourcedb_clone '에 대 한 spid53 설정 데이터베이스 옵션을 안전 하 게 해제 하세요. <타임스탬프> DB_CHAINING 데이터베이스 ' sourcedb_clone '을 (를) 시작 하 고 있습니다. <timestamp> spid53 데이터베이스 ' sourcedb_clone '은 복제 된 데이터베이스입니다. 복제 된 데이터베이스는 진단 목적 으로만 사용 해야 하며 프로덕션 환경에서 사용할 수 없습니다. <Timestamp> ' sourcedb '에 대 한 spid53 데이터베이스 복제가 완료 되었습니다. 복제 된 데이터베이스는 ' sourcedb_clone '입니다.

데이터베이스 속성

새 데이터베이스 속성 Isclone 이 추가 됩니다. DBCC CLONEDATABASE를 사용 하 여 데이터베이스를 생성 한 경우 databasepropertyex (' dbname ', ' isclone ') 는 1 을 반환 합니다.

예제

  1. 스키마, 통계 및 쿼리 저장소 (SQL Server 2016 SP1 이상 버전)를 포함 하는 AdventureWorks 데이터베이스의 복제본 만들기

    Transact-SQL -- Generate the clone of AdventureWorks database.    DBCC CLONEDATABASE (AdventureWorks, AdventureWorks_Clone);    GO 
  2. 통계 없이 SQL Server 2014에서 AdventureWorks 데이터베이스의 스키마 전용 복제본 만들기 (SQL Server 2014 SP2 CU3 이상 이상 버전)

    DBCC CLONEDATABASE (AdventureWorks, AdventureWorks_Clone) WITH NO_STATISTICS
  3. 통계 및 쿼리 저장소 없이 AdventureWorks 데이터베이스의 스키마 전용 복제본 만들기 (SQL Server 2016 SP1 이상 버전)

    DBCC CLONEDATABASE (AdventureWorks, AdventureWorks_Clone) WITH NO_STATISTICS,NO_QUERYSTORE

참조

Microsoft에서 소프트웨어 업데이트를 설명 하는 데 사용 하는 용어 에 대해 알아봅니다.

추가 도움이 필요하신가요?

기술 향상
교육 살펴보기
새로운 기능 우선 가져오기
Microsoft Insider 참가

이 정보가 유용한가요?

소중한 의견에 감사드립니다.

피드백을 주셔서 감사합니다. Office 지원 에이전트와 연락하는 것이 도움이 될 것 같습니다.

×