데이터 내보내기 서비스를 사용하여 Azure SQL 데이터베이스에 데이터 복제

노트

2021년 11월부터 데이터 내보내기 서비스가 더 이상 사용되지 않습니다. 데이터 내보내기 서비스는 계속 작동하며 2022년 11월 지원이 종료되고 수명이 종료될 때까지 완전히 지원됩니다. 추가 정보: https://aka.ms/DESDeprecationBlog

데이터 내보내기 서비스는 Microsoft Dataverse 데이터베이스에서 고객 소유 Azure 구독의 Azure SQL 데이터베이스 저장소로 데이터를 복제하는 기능을 추가하는 Microsoft AppSource에서 사용할 수 있는 추가 서비스입니다. 지원되는 대상 대상은 Azure 가상 컴퓨터의 Azure SQL Database 및 SQL Server입니다. 데이터 내보내기 서비스는 지능적으로 전체 데이터를 처음 동기화하고 그 이후로 시스템에서 변경이 발생할 때(델타 변경) 지속적으로 동기화합니다. 이렇게 하면 Azure 데이터 및 분석 서비스로 데이터에 대한 여러 분석 및 보고 시나리오를 사용할 수 있고 고객 및 파트너가 사용자 지정 솔루션을 구축할 수 있는 새로운 가능성을 엽니다.

노트

Azure Synapse Link for Dataverse를 사용하여 Dataverse 데이터를 Azure Synapse Analytics 및/또는 Azure Data Lake Gen2로 내보내는 것이 매우 좋습니다. 추가 정보: Azure Synapse Link for Dataverse로 인사이트 확보 시간 단축

고객 참여 앱(Dynamics 365 Sales, Dynamics 365 Customer Service, Dynamics 365 Field Service, Dynamics 365 Marketing 및 Dynamics 365 Project Service Automation)에서 데이터 내보내기 서비스를 사용할 수 있습니다.

구성 및 운영 관리를 위한 프로그래밍 인터페이스에 대한 내용은 개발자 가이드의 데이터 내보내기 서비스를 참조하세요.

데이터 내보내기 서비스 사용을 위한 전제 조건

데이터 내보내기 서비스를 사용하기 위해 다음과 같은 조건이 필요합니다.

Azure SQL 데이터베이스 서비스

  • 고객 소유 Azure SQL Database 구독. 이 구독은 동기화되는 데이터의 양을 허용해야 합니다.

  • 방화벽 설정. Azure 서비스에 액세스 허용을 해제하고 이 항목에 나열된 해당 클라이언트 IP 주소를 지정하는 것이 좋습니다 추가 정보: 내보내기 데이터 서비스에서 사용하는 Azure SQL 데이터베이스 정적 IP 주소

    또는 Azure 서비스에 액세스 허용을 설정하여 모든 Azure 서비스에 대한 액세스를 허용할 수 있습니다.

    Azure 가상 머신의 SQL Server의 경우 "인터넷을 통해 SQL Server 연결" 옵션이 활성화되어야 합니다. 추가 정보: Azure: Azure에서 SQL Server 가상 머신에 연결

    또한 데이터 내보내기 서비스와 SQL Server 간의 통신을 허용하도록 방화벽 규칙을 구성하십시오.

  • 데이터베이스 사용자는 다음 테이블에 따라 데이터베이스 및 스키마 수준 권한이 있어야 합니다. 데이터베이스 사용자는 데이터 내보내기 연결 문자열에 사용됩니다.

    데이터베이스 권한이 필요합니다.

    권한 유형 코드 권한 이름
    CRTB 테이블 만들기
    CRTY 유형 만들기
    CRVW 보기 만들기
    CRPR 절차 만들기
    ALUS 모든 사용자 변경
    VWDS 데이터베이스 상태 보기

    스키마 권한이 필요합니다.

    권한 유형 코드 권한 이름
    AL 변경
    IN 삽입
    DL Delete
    SL 선택
    UP 업데이트
    EX 실행
    RF 참조

Azure 주요 자격 증명 모음 서비스

  • 구독 데이터베이스 연결 문자열을 안전하게 유지하는 데 사용되는 고객 소유 주요 자격 증명 모음.

  • ID가 "b861dbcc-a7ef-4219-a005-0e4de4ea7dcf"인 애플리케이션에 PermissionsToSecrets 권한을 부여합니다. 아래의 AzurePowerShell 명령을 실행하여 완료할 수 있으며 연결 문자열 비밀이 포함된 Key Vault에 액세스하는 데 사용됩니다. 추가 정보: Azure Key Vault 설정 방법

  • 주요 자격 증명 모음 내 비밀은 조직(OrgId)과 테넌트 ID(TenantId)와 함께 태그를 지정해야 합니다. 이는 아래의 AzurePowerShell 명령을 실행하여 완료할 수 있습니다. 추가 정보: Azure Key Vault 설정 방법

  • 데이터 내보내기 서비스와 Azure Key Vault 간의 통신을 허용하도록 방화벽 규칙을 구성하십시오.

고객 참여 앱

  • 버전 9.0 이상의 버전 환경.

  • 데이터 내보내기 서비스 솔루션을 설치해야 합니다.

    • 설정>Microsoft 앱 소스> 로 이동하고 Microsoft Dynamics 365 - 데이터 내보내기 서비스를 검색하거나 찾아보기한 다음 지금 받기를 선택하세요.
    • 또는 Microsoft AppSource에서 찾아보십시오.
  • 내보내기 프로필에 추가할 수 있는 엔터티는 변경 내용 추적을 사용하도록 설정해야 합니다. 표준 또는 사용자 지정 엔터티를 동기화할 수 있는지 확인하려면 사용자 지정>시스템 사용자 지정으로 이동하여 엔터티를 선택합니다. 일반 탭에서 데이터 서비스 섹션 아래에 있는 변경 내용 추적 옵션이 활성화되어 있는지 확인합니다.

  • 환경에서 시스템 관리자 보안 역할을 가지고 있어야 합니다.

웹 브라우저

웹 브라우저에서 해당 도메인의 팝업을 활성화하세요. https://discovery.crmreplication.azure.net/ 설정 > 데이터 내보내기로 이동할 때 자동 로그인을 위해 필요합니다.

필요한 서비스, 자격 증명 및 권한

데이터 내보내기 서비스 기능을 사용하려면 다음과 같은 서비스, 자격증 및 권한이 있어야 합니다.

  • 구독. 시스템 관리자 보안 역할에 할당된 사용자만 데이터 내보내기 프로필을 설정하거나 변경할 수 있습니다.

  • 다음과 같은 서비스를 포함하는 Azure 구독.

    • Azure 가상 컴퓨터의 Azure SQL Database 또는 AzureSQL Server.

    • Azure Key Vault.

중요

데이터 내보내기 서비스를 사용하려면 고객 참여 앱과 Azure Key Vault 서비스가 동일한 테넌트 및 동일한 Microsoft Entra ID 내에서 작동해야 합니다. 추가 정보: Microsoft 365와 Azure 통합

Azure SQL Database 서비스는 서비스와 동일한 또는 다른 테넌트에 있을 수 있습니다.

데이터 내보내기 서비스를 사용하기 전에 알아두어야 할 사항

  • 환경에서 다음 작업을 수행할 때마다 내보내기 프로필을 삭제한 다음 다시 만들어야 합니다.

    • 환경을 복원합니다.
    • 환경을 복사합니다(전체 또는 최소).
    • 환경을 재설정합니다.
    • 환경을 다른 국가나 지역으로 이동합니다.

    이를 위해 내보내기 프로필 보기에서 내보내기 프로필을 삭제한 다음 테이블 및 저장 프로시저를 삭제하고 새 프로필을 만듭니다. 추가 정보: 모든 데이터 내보내기 프로필 테이블 및 저장 프로시저를 삭제하는 방법

  • 데이터 내보내기 서비스는 관리 모드 사용이 활성화된 상태로 구성된 샌드박스 또는 프로덕션 환경에 대해 작동하지 않습니다. 추가 정보: 관리 사용

  • 다음 작업이 발생할 때 데이터 내보내기 서비스는 대상 Azure SQL 데이터베이스에 있는 관련 테이블, 열 또는 저장 프로시저 개체를 제거(삭제)하지 않습니다.

내보내기 프로필

고객 참여 앱에서 데이터를 내보내려면 관리자가 내보내기 프로필을 만들어야 합니다. 여러 프로필을 만들고 활성화하여 데이터를 동시에 다른 대상 데이터베이스와 동기화할 수 있습니다.

내보내기 프로필은 데이터 내보내기 서비스의 핵심 개념입니다. 내보내기 프로필은 설정 및 구성 정보를 수집하여 데이터를 대상 데이터베이스와 동기화합니다. 내보내기 프로필의 일부로서 관리자는 대상 데이터베이스로 내보낼 엔터티 목록을 제공합니다. 한 번 활성화되면 내보내기 프로필은 데이터의 자동 동기화를 시작합니다. 처음에 선택한 엔터티 각각에 해당하는 데이터가 모두 내보내집니다. 그 후 고객 참여 앱의 엔터티 레코드 또는 메타데이터 데이터 변경이 발생할 때만 푸시 메커니즘을 사용하여 지속적으로 거의 실시간으로 동기화됩니다. 따라서 고객 참여 앱에서 데이터를 검색하는 일정을 설정할 필요가 없습니다.

변경 내용 추적을 사용할 수 있는 엔터티만 내보내기 프로필에 추가할 수 있습니다. 데이터를 수집하는 대부분의 표준 엔터티는 변경 내용 추적을 사용하도록 설정됩니다. 사용자 지정 엔터티를 내보내기 프로필에 추가 하려면 이전에 변경 내용 추적이 명시적으로 활성화되어야 합니다. 자세한 내용: 변경 내용 추적을 활성화하여 데이터 동기화 제어

데이터 내보내기 서비스는 메타데이터와 데이터를 모두 동기화합니다. 각 엔터티는 하나의 테이블로 변환하고 각 필드는 대상 데이터베이스 테이블의 열로 변환합니다. 테이블 및 열 이름은 메타데이터의 스키마 이름을 사용합니다.

한 번 활성화하면 내보내기 프로필은 작업 가시성과 내보낸 데이터 진단에 도움이 되는 데이터 동기화에 대한 통계를 수집합니다.

사용할 수 있는 내보내기 프로필 데이터 동기화

범주 기능 지원되는 데이터 형식
초기 동기화 메타데이터 - 기본 데이터 형식 정수, 부동 숫자, 십진수, 한 줄 텍스트, 여러 줄 텍스트, 날짜 및 시간 데이터 형식.
초기 동기화 메타데이터 - 고급 데이터 형식 통화, PartyList, 옵션 설정, 상태, 상태 설명, 조회(고객 및 관련 형식 조회 포함). PartyList는 내보내기 버전 8.1과 이상에서만 제공됩니다.
초기 동기화 데이터 - 기본 형식 모든 기본 데이터 형식
초기 동기화 데이터 - 고급 형식 모든 고급 데이터 형식
델타 동기화 스키마 수정 - 기본 형식 필드 변경 추가 또는 변경, 모든 기본 데이터 형식
델타 동기화 스키마 수정 - 고급 형식 필드 변경 추가 또는 변경, 모든 고급 데이터 형식
델타 동기화 데이터 수정 - 기본 형식 모든 기본 데이터 형식
델타 동기화 데이터 수정 - 고급 형식 PartyList와 같은 모든 고급 데이터 형식.

내보내기 프로필 만들기

내보내기 프로필을 만들기 전에 다음 요구 사항이 충족되었는지 확인합니다.

  • 데이터 내보내기 서비스 솔루션이 환경에 설치됩니다.

  • Key Vault에서 SQL Database 연결 문자열을 유지하고 내보내기 프로필에 제공할 Key Vault URL을 복사합니다. 추가 정보: Azure: Azure 주요 자격 증명 모음 시작

  • 내보내기 프로필에 추가할 엔터티는 변경 내용 추적을 사용하도록 설정됩니다. 자세한 내용: 변경 내용 추적을 활성화하여 데이터 동기화 제어

  • SQL Database 서비스에는 데이터를 저장하기에 충분한 저장 공간이 있습니다.

  • 환경의 시스템 관리자입니다.

  1. 설정>데이터 내보내기로 이동합니다.

  2. 공지를 검토한 다음 계속 또는 데이터를 내보내지 않으려는 경우 취소를 선택합니다.

  3. 내보내기 프로필을 만들려면 새로 만들기를 선택합니다.

  4. 속성 단계에서 다음 정보를 입력한 다음 다음을 선택하여 주요 자격 증명 모음에 연결하지 않고 계속합니다. 유효성 검사를 선택하면 제공한 주요 자격 증명 모음 URL을 사용하여 주요 자격 증명 모음에 연결합니다.

    • 이름. 프로필의 고유한 이름입니다. 이 필드는 필수입니다.

    • Key Vault 연결 URL. 대상 데이터베이스에 연결하는 데 사용되는 자격 증명과 함께 저장된 연결 문자열을 가리키는 주요 자격 증명 모음 URL입니다. 이 필드는 필수입니다. 추가 정보: Azure Key Vault 설정 방법

      중요

      주요 자격 증명 모음 연결 URL은 대소문자를 구분합니다. 이 토픽에서 Windows PowerShell 명령을 실행한 후 표시되는 Key Vault 연결 URL을 정확하게 입력합니다.

    • 스키마. 대체 데이터베이스 스키마에 대한 이름입니다. 영숫자 문자만 유효합니다. 이 필드는 선택적입니다. 기본적으로 dbo는 대상 SQL Database에 사용되는 스키마입니다.

    • 접두사. 대상 데이터베이스에서 만든 테이블 이름에 사용되는 접두사입니다. 대상 데이터베이스에 있는 내보내기 프로필을 위해 만든 테이블을 쉽게 식별할 수 있게 해줍니다. 지정된 경우 접두사 문자가 15개 이내인지 확인합니다. 이 필드는 선택 사항이며 영숫자 문자만 사용할 수 있습니다.

    • 재시도 횟수. 대상 테이블에 삽입 또는 업데이트 실패 시 레코드가 다시 시도된 횟수입니다. 이 필드는 필수입니다. 사용할 수 있는 값은 0~20이고 기본값은 12입니다.

    • 재시도 간격. 실패 시 다시 시도하기 전에 대기할 시간(초)입니다. 이 필드는 필수입니다. 사용할 수 있는 값은 0~3600이고 기본값은 5입니다.

    • 쓰기 삭제 로그. 삭제된 레코드 로딩에 대한 설정입니다(선택 사항).

    내보내기 프로필 만들기 대화 상자의 속성 탭.

  5. 엔터티 선택 단계에서 대상 SQL Database로 내보낼 엔터티를 선택한 후 다음을 선택합니다.

    내보내기 프로필 만들기 대화 상자의 엔터티 선택 탭.

  6. 관계 선택 단계에서 이전 단계에서 선택한 엔터티와 함께 존재하는 M:N(다대다) 관계를 동기화할 수 있습니다. 다음을 선택합니다.

    내보내기 프로필 만들기 - 관계 관리 - 관계 선택.

  7. 요약 단계에서 만들기 및 활성화를 선택하여 프로필 레코드를 만들고 동기화 프로세스를 시작하는 주요 자격 증명 모음과 연결합니다. 아니면 만들기를 선택하여 내보내기 프로필을 저장하고 나중에 인증합니다.

    내보내기 프로필 만들기 대화 상자의 요약 탭.

기존 내보내기 프로필 수정

복제하고자 하는 기존 내보내기 프로필의 엔터티 및 관계를 추가하거나 제거할 수 있습니다.

  1. 설정>데이터 내보내기로 이동합니다.

  2. 모든 데이터 내보내기 프로필 보기에서 변경하려는 내보내기 프로필을 선택합니다.

    내보내기 프로필 선택.

  3. 작업 도구 모음에서 엔터티 관리를 선택하여 데이터 내보내기의 엔터티를 추가 또는 제거합니다. 엔터티 관계를 추가하거나 제거하려면 관계 관리를 선택합니다.

    엔터티 또는 엔터티 관계 관리.

  4. 추가 또는 제거할 엔터티 또는 엔터티 관계를 선택합니다.

    추가 또는 제거할 엔터티 또는 엔터티 관계 선택.

  5. 업데이트를 선택하여 변경 내용을 내보내기 프로필에 전송합니다.

중요

내보내기 프로필에서 엔터티 또는 엔터티 관계를 제거하면 대상 데이터베이스에서 해당하는 테이블에서 삭제되지 않습니다. 제거한 엔터티를 다시 추가하기 전에 대상 데이터베이스의 해당 테이블을 삭제해야 합니다. 엔터티 테이블을 삭제하려면 특정 엔터티에 대해 데이터 내보내기 프로필 테이블 및 저장 프로시저를 삭제하는 방법을 참조하십시오.

대상 SQL Azure 데이터베이스에 대한 테이블 정보

데이터 내보내기 서비스는 데이터 및 메타데이터 모두에 대한 테이블을 생성합니다. 각 엔터티 및 동기화된 M:N 관계에 대한 테이블이 생성됩니다.

내보내기 프로필이 활성화되면 이 테이블이 대상 데이터베이스에 만들어집니다. 이는 시스템 테이블이며, SinkCreatedTime및 SinkModifiedTime 필드가 추가되지 않습니다.

테이블 이름 만듦
<접두사>_GlobalOptionsetMetadata 내보내기 프로필 활성화 시.
<접두사>_옵션세트메타데이터 내보내기 프로필 활성화 시.
<접두사>_StateMetadata 내보내기 프로필 활성화 시.
<접두사>_StatusMetadata 내보내기 프로필 활성화 시.
<접두사>_TargetMetadata 내보내기 프로필 활성화 시.
<접두사>_속성메타데이터 내보내기 프로필 활성화 시.
<접두사>_DeleteLog 삭제 로그 옵션이 사용하도록 설정된 경우 내보내기 프로필 정품 인증 시.

동기화 문제 해결

데이터베이스 저장소 제약 조건 또는 긴 실행 시간의 쿼리로 인한 테이블 잠금 때문에 여러 번 재시도해도 레코드 동기화 오류가 발생할 수 있습니다. 이러한 오류를 해결하려면 실패한 레코드 또는 모든 레코드에 대해 동기화를 다시 시행할 수 있습니다.

  1. 레코드 동기화에 실패한 내보내기 프로필을 찾습니다. 이를 위해 동기화 영역에서 데이터 프로필을 살펴보거나 연락처 엔터티 레코드 동기화에 실패한 프로필 등 내보내기 프로필을 엽니다.

    DataExport_failed_records_exist.

  2. 동기화 오류의 원인을 찾아 해결합니다. 추가 정보: 오류 처리 및 모니터링

  3. 이 문제를 해결 후 실패한 레코드를 다시 동기화합니다.

    노트

    실패한 레코드 동기화는 공개 미리 보기 기능입니다.

    • 프리뷰 기능은 생산용으로 만들어진 것이 아니므로 기능이 제한될 수 있습니다. 이런 기능은 공식 릴리스 전에 사용할 수 있으므로 고객이 조기에 액세스하고 피드백을 제공할 수 있습니다.
      • 이 기능을 변경할 예정이므로 생산 환경에서는 사용해서는 안 됩니다. 테스트 및 개발 환경에서만 사용하십시오.
      • Microsoft 미리 보기 기능에 대한 지원을 제공하지 않습니다. Microsoft Dynamics 365 기술 지원은 문제 또는 질문과 관련하여 도움을 제공할 수 없습니다. 미리 보기 기능은 생산용으로 만들어진 것이 아니므로 별도의 보충 사용 약관이 적용됩니다.
    1. 환경에 로그인하여 설정>데이터 내보내기로 이동합니다.

    2. 레코드 동기화 실패를 포함하는 내보내기 프로필을 엽니다.

    3. 내보내기 프로필 도구 모음에서 실패한 레코드 재동기화를 선택합니다.

    4. 확인 대화 상자에서 실패한 레코드를 성공적으로 다시 동기화한 후 확인을 선택합니다.

    성공적인 재동기화 알림.

    1. 데이터 내보내기 프로필을 열어 내보내기 프로필에 실패한 알림이 포함되어 있지 않은지 확인합니다. 속성 및 개요 탭의 실패 알림 카운터가 0이어야 합니다. 내보내기 프로필 도구 모음에서 새로 고침을 선택하여 실패 알림 값이 현재인지 확인합니다.

    0 레코드 실패 표시.

  4. 이전 단계에 따라 재동기화를 시도한 후에도 레코드 동기화 실패가 지속되면 Microsoft 고객 지원 서비스에 문의하세요.

오류 처리 및 모니터링

내보내기 프로필의 동기화 상태를 확인하려면 설정>데이터 내보내기로 이동하여 내보내기 프로필을 엽니다. 엔터티 탭에서 동기화하지 못한 레코드에 대한 실패한 레코드 열을 포함하여 동기화 상태가 표시됩니다. 실패한 모든 레코드에 대해 명령 모음의 실패한 레코드를 선택하여 상태 설명을 포함하는 레코드 목록을 다운로드할 수 있습니다.

내보내기 프로필 명령 모음 - 실패한 레코드 단추.

내보내기 프로필에서 속성 및 개요를 선택하여 프로필의 속성을 표시할 수 있습니다. 관계를 선택하여 관계 동기화 상태를 봅니다.

동기화에 실패한 레코드에 대한 세부 정보를 보는 방법

실패한 레코드 로그를 보면 동기화 실패의 원인을 파악하는 데 도움이 됩니다. 대상 Azure 대상 데이터베이스에서 실패한 레코드를 보려면 독립 실행형 무료 앱인 Azure 저장소 탐색기를 사용하면 Azure 저장소 데이터를 쉽게 사용할 수 있습니다. 추가 정보: Azure Storage Explorer.

  1. 설정>데이터 내보내기로 이동합니다.

  2. 모든 데이터 내보내기 프로필 보기에서 실패 알림이 있는 내보내기 프로필을 선택합니다.

    실패 알림.

  3. 작업 도구 모음에서 실패한 레코드를 선택합니다.

    실패한 레코드 도구 모음 단추.

  4. 다운로드 실패 레코드 대화 상자에서 BLOB URL 복사를 선택한 다음 확인을 선택합니다.

    다운로드 실패 레코드 대화 상자.

    노트

    BLOB URL은 최대 24시간 동안 유효합니다. 24시간 기간을 초과하는 URL의 경우 앞에서 설명한 단계를 반복하여 새 BLOB URL을 생성합니다.

  5. Azure 저장소 탐색기를 시작합니다.

  6. Azure 저장소 탐색기에서 Azure 저장소에 연결을 선택합니다.

  7. 클립보드에서 Azure 저장소에 연결 상자에 URL을 붙여 넣고 다음을 선택합니다.

  8. 연결 요약 페이지에서 연결을 선택합니다.

  9. Azure 저장소 탐색기가 대상 데이터베이스에 연결됩니다. 내보내기 프로필에 실패한 레코드가 있을 경우 Azure 저장소 탐색기에 실패한 레코드 동기화 폴더가 표시됩니다.

동기화에 실패한 레코드에 대한 세부 정보를 보는 방법(프리뷰)

데이터 내보내기 서비스 사용자 인터페이스 내에서 실패한 레코드를 직접 다운로드할 수 있습니다. 이 기능은 현재 미리 보기 상태이며 사용자가 피드백을 테스트하고 제공하는 데 유용합니다.

실패한 레코드를 다운로드하는 단계:

  1. 실패한 레코드가 있는 프로필을 식별합니다.

    데이터 내보내기 프로필.

  2. 프로필을 선택하고 최상위 메뉴 표시줄에서 실패한 레코드 다운로드(미리 보기)를 선택합니다.

    실패한 레코드 다운로드(프리뷰).

  3. 실패한 레코드 다운로드 대화 상자에 마지막 20개(최대) blob 파일의 정렬된 목록이 표시됩니다. 다운로드할 항목을 선택하고 Ok을 선택합니다.

    실패한 레코드 다운로드.

  4. 다운로드가 완료되면 선택한 텍스트 편집기(예: 메모장)에서 파일을 열고 오류에 대한 세부 정보를 봅니다.

    샘플 오류 로그.

실패한 레코드 동기화 폴더 구조 및 로그 파일

실패한 레코드 Azure Blob 저장소 URL은 다음과 같은 폴더 구조의 위치를 가리킵니다.

  • 데이터. 이 폴더에는 실패한 데이터 알림 및 레코드 데이터에 연결된 JSON이 포함되어 있습니다.

  • 메타데이터. 이 폴더에는 실패한 메타데이터 알림 및 메타데이터에 연결된 JSON이 포함되어 있습니다.

  • 실패로그. 이 폴더에는 동기화 실패에 대한 정보와 실패가 발생한 원인에 대한 정보를 제공하는 로그가 포함되어 있습니다.

  • forcerefreshfailurelog. 이 폴더에는 실패한 레코드를 다시 동기화하는 데 사용된 데이터 내보내기 서비스 실패한 레코드 명령의 마지막 실행에서 발생한 오류가 포함되어 있습니다.

  • 처리할 수 없는 메시지. 이 폴더에는 데이터 또는 메타데이터 그리고 연결된 JSON의 삭제로 인해 처리되지 않은 데이터 알림이 들어있습니다.

    오류 로그 및 강제로 실패 로그 새로 고침 폴더의 구조는 \\\시간이므로 빠르게 최근 실패를 찾을 수 있습니다. 30일이 지난 모든 오류 레코드는 삭제됩니다.

    연락처 엔터티 레코드 동기화 오류를 나타내는 로그 파일의 예는 다음과 같습니다.

Entity: contact, RecordId: 459d1d3e-7cc8-e611-80f7-5065f38bf1c1, NotificationTime: 12/28/2016 12:32:39 AM, ChangeType: Update, FailureReason: The database 'tempdb' has reached its size quota. Partition or delete data, drop indexes, or consult the documentation for possible resolutions.  
The statement has been terminated.  

레코드 동기화 실패의 흔한 원인

레코드 동기화 실패가 발생하는 몇 가지 원인은 다음과 같습니다.

  • 대상 데이터베이스의 저장소가 부족한 경우. 실패한 레코드를 다시 동기화하기 전에 Azure SQL Database 저장소를 적절히 늘리거나 비웁니다. 이 문제가 발생하면 다음과 유사한 메시지가 오류 로그에 기록됩니다.

    데이터베이스 '데이터베이스 이름'이 크기 제한에 도달했습니다. 데이터를 분할 또는 삭제하거나, 인덱스를 삭제하거나, 가능한 해결 방법에 대 한 설명서를 참조하십시오.

  • Azure SQL Database와 동기화 시간 초과. 처음 데이터 내보내기 프로필을 동기화할 때 한 번에 많은 양의 데이터 처리하는 경우 발생할 수 있습니다. 이 문제가 발생하면 실패한 레코드를 다시 동기화합니다. 동기화 문제 해결

데이터 내보내기를 사용하여 Azure SQL 데이터베이스를 사용할 때 최상의 방법

  • 리소스 제한으로 인한 동기화 실패를 방지하려면 데이터 내보내기 서비스를 사용할 때 Azure SQL Database 프리미엄 P1 또는 보다 고급의 플랜을 사용하는 것이 좋습니다. 추가 정보: Azure SQL Database 리소스 제한SQL Database 가격 책정

  • Azure SQL Database를 설정하면 RCSI(Read Committed Snapshot Isolation)를 보고 및 ETL 작업 등 장기 실행 읽기 쿼리를 실행하는 대상 데이터베이스에서 동시에 실행 중인 워크로드에 사용할 수 있습니다. 읽기/쓰기 충돌 때문에 데이터 내보내기 서비스에 발생할 수 있는 시간 초과 오류 발생을 감소시킵니다.

  • 쿼리 성능을 향상시키려면 데이터 내보내기 서비스 데이터베이스 최대 병렬 처리 수준(MAXDOP)을 1로 설정하는 것이 좋습니다. 자세한 내용: MSDN: 서버 메모리 옵션

  • 조각화 정도를 자주 평가하고 필요한 경우 데이터 내보내기 서비스 데이터베이스의 인덱스를 다시 작성합니다. 추가 정보: 인덱스 재구성 및 다시 작성

  • 데이터 내보내기 서비스 데이터베이스의 테이블 및 인덱싱된 뷰에 대한 데이터베이스 통계를 정기적으로 업데이트합니다. 자세한 내용: 통계 업데이트

  • 데이터 내보내기 서비스 데이터베이스의 사용률을 모니터링합니다. 자세한 내용: 성능 모니터링

데이터 동기화 대기 시간 정보

데이터 내보내기 서비스는 고객 참여 앱에서 변경 사항이 있을 때 해당 내용을 수신하여 푸시 메커니즘을 사용하여 데이터 변경 내용을 대상 데이터베이스에 동기화하도록 설계되었습니다. 서비스는 몇 분 내에 데이터를 푸시하기 위해 노력하지만 종단 간 동기화 대기 시간에 영향을 줄 수 있는 요인에는 여러 가지가 있습니다.

동기화 기간에 영향을 미치는 요인은 다음과 같습니다.

  • 고객 참여 앱의 현재 작업 부하입니다.
  • 고객 참여 앱의 데이터 변경률입니다.
  • 각 내보내기 프로필과 해당 특성에 추가되는 엔터티의 수.
  • SQL Server 성능. 예:
    • SQL 연결 설정 시간.
    • SQL 문 실행 시간.

서비스의 모니터링에 따르면 대부분의 진행 중인 델타 동기화는 서비스가 다음과 같은 조건에서 작동할 때 15분 후에 완료된다는 것이 확인되었습니다.

  • 발생하는 동기화는 초기 동기화가 아닌 델타 동기화입니다. 델타 동기화는 레코드 만들기, 업데이트 및 삭제 트랜잭션을 포함하는 데이터 변경 작업에만 사용됩니다. 초기 동기화가 완료되면 델타 동기화가 시작됩니다.
  • 내보내기 프로필의 모든 엔터티에 대한 고객 참여 앱의 최대 데이터 변경 비율은 시간당 3000레코드보다 작습니다. 최대 변경 속도를 초과한 레코드의 대량 변경으로 인해 데이터 변경 비율이 급격하게 증가하면 추가 대기 시간이 발생합니다.
  • 내보내기 프로필에 추가된 각 엔터티는 150 특성보다 작습니다.
  • 데이터베이스 연결 또는 SQL 문 실행이 10초 이내에 완료됩니다. 이 제한을 초과하면 추가 대기 시간이 발생합니다.
  • 동기화 중에는 대상 데이터베이스 연결이나 SQL 실행 오류가 발생하지 않습니다.

위의 조건이 충족된 경우 일반적인 동기화 대기 시간은 15분입니다. Microsoft 데이터 내보내기 서비스에 대한 서비스 수준 계약(SLA)을 제공하지 않으며 동기화 지연 시간과 관련하여 어떠한 보장이나 약속도 하지 않습니다.

Azure 주요 자격 증명 모음 설정 방법

여기에 설명된 Windows PowerShell 스크립트를 Azure 계정 관리자로 실행하여 Azure Key Vault에 액세스할 수 있도록 데이터 내보내기 서비스 기능에 대한 권한을 부여합니다. 이 스크립트는 연결 문자열에 액세스 하는 데 사용되는 내보내기 프로필을 만드는 데 필요한 주요 자격 증명 모음 URL을 표시합니다.

스크립트를 실행하기 전에 다음과 같은 변수에 대한 자리 표시자를 바꿉니다.

  • $subscriptionId. 사용하려는 주요 자격 증명 모음 리소스 그룹입니다. 리소스 그룹이 아직 없는 경우 지정한 이름으로 새 그룹이 생성됩니다. 이 예제에서는 ContosoResourceGroup1이 사용됩니다.

  • $location. 미국 서부와 같이 리소스 그룹이 있거나 있어야 할 위치를 지정합니다.

  • $connectionString. Azure SQL Database에 대한 연결 문자열입니다. Azure 대시보드에 표시되는 ADO.NET 연결 문자열을 사용할 수 있습니다.

  • $organizationIdList = 데이터 내보내기 서비스에 대해 사용하기 위해 조직 ID(organizationId)별로 나열된 쉼표로 구분된 허용된 조직 목록. 조직 ID를 찾으려면 설정>사용자 지정>개발자 리소스로 이동합니다. 조직 ID는 환경 참조 정보 아래에 있습니다.

  • $tenantId. Key Vault 구독이 속하는 Azure Active Directory 테넌트 ID를 지정합니다.

중요

Azure 구독에는 여러 Azure Active Directory 테넌트 ID가 있을 수 있습니다. 데이터 내보내기에 사용할 환경과 연결된 올바른 Azure Active Directory 테넌트 ID를 선택했는지 확인합니다.

노트

$connectionString에서 참조되는 사용자 ID에 대상 Azure SQL Database에 대한 적절한 권한이 있는지 확인합니다.

# -------------------------------------------------------------------------------- #
    #  Provide the value for the following parameters before executing the script
$subscriptionId = 'ContosoSubscriptionId'    
$keyvaultName = 'ContosoKeyVault'
    $secretName = 'ContosoDataExportSecret'
    $resourceGroupName = 'ContosoResourceGroup1'
    $location = 'West US'
    $connectionString = 'AzureSQLconnectionString'
$organizationIdList = 'ContosoSalesOrg1_id, ContosoSalesOrg2_id'
$tenantId = 'tenantId'
    # -------------------------------------------------------------------------------- #

# Login to Azure account, select subscription and tenant Id
Connect-AzAccount -Tenant $tenantId -Subscription $subscriptionId

# Create new resource group if not exists.
$rgAvail = Get-AzResourceGroup -Name $resourceGroupName -Location $location -ErrorAction SilentlyContinue
if(!$rgAvail){
    New-AzResourceGroup -Name $resourceGroupName -Location $location
}

# Create new key vault if not exists.
$kvAvail = Get-AzKeyVault -VaultName $keyvaultName -ResourceGroupName $resourceGroupName -ErrorAction SilentlyContinue
if(!$kvAvail){
    New-AzKeyVault -VaultName $keyvaultName -ResourceGroupName $resourceGroupName -Location $location
    # Wait few seconds for DNS entry to propagate
    Start-Sleep -Seconds 15
}

# Create tags to store allowed set of Organizations.
$secretTags = @{}
foreach ($orgId in $organizationIdList.Split(',')) {
    $secretTags.Add($orgId.Trim(), $tenantId)
}

# Add or update a secret to key vault.
$secretValue = ConvertTo-SecureString $connectionString -AsPlainText -Force
$secret = Set-AzKeyVaultSecret -VaultName $keyvaultName -Name $secretName -SecretValue $secretValue -Tags $secretTags

# Authorize application to access key vault.
$servicePrincipal = 'b861dbcc-a7ef-4219-a005-0e4de4ea7dcf'
Set-AzKeyVaultAccessPolicy -VaultName $keyvaultName -ServicePrincipalName $servicePrincipal -PermissionsToSecrets get

# Display secret url.
Write-Host "Connection key vault URL is "$secret.id.TrimEnd($secret.Version)""

모든 데이터 내보내기 프로필 테이블 및 저장 프로시저를 삭제하는 방법

중요

이 SQL 문을 실행하기 전에 문에서 @prefix 및 @schema 값을 올바르게 정의했는지 확인하세요. 이 SQL 문을 실행하고 나면 내보내기 프로필을 다시 만들어야 합니다.

-----------------------------------------------------------------
-- Provide the value for the following parameters
DECLARE @prefix nvarchar(32) =''
DECLARE @schema nvarchar(32) ='dbo'
-----------------------------------------------------------------

DECLARE @sql nvarchar(max) = '';

SELECT @sql += 'DROP TABLE ' + QUOTENAME([TABLE_SCHEMA]) + '.' + QUOTENAME([TABLE_NAME]) + ';'
FROM [INFORMATION_SCHEMA].[TABLES]
WHERE [TABLE_TYPE] = 'BASE TABLE' AND [TABLE_NAME] like @prefix + '_%' AND [TABLE_SCHEMA]= @schema;

PRINT @sql
EXEC SP_EXECUTESQL @sql;

PRINT 'Finished dropping all tables. Starting to drop all stored procedures now.'

SELECT @sql='';
SELECT @sql += 'DROP PROCEDURE ' + QUOTENAME([ROUTINE_SCHEMA]) + '.' + QUOTENAME([ROUTINE_NAME]) + ';'
FROM [INFORMATION_SCHEMA].[ROUTINES]
WHERE [ROUTINE_TYPE] = 'PROCEDURE' AND [ROUTINE_NAME] like @prefix + '_%' AND [ROUTINE_SCHEMA]= @schema;
PRINT @sql
EXEC SP_EXECUTESQL @sql;

PRINT 'Finished dropping all stored procedures. Starting to drop all types now.'

SELECT @sql=''; 
SELECT @sql += 'DROP TYPE ' + QUOTENAME(SCHEMA_NAME([SCHEMA_ID])) + '.' +  QUOTENAME([NAME]) + ';'
FROM SYS.TYPES
WHERE is_user_defined = 1 AND [NAME] LIKE @prefix + '_%' AND [SCHEMA_ID]=SCHEMA_ID(@schema);

PRINT @sql
EXEC SP_EXECUTESQL @sql;

특정 엔터티에 대해 데이터 내보내기 프로필 테이블 및 저장 프로시저를 삭제하는 방법

중요

이 SQL 문을 실행하기 전에 문에서 @prefix, @schema 및 @entityName 값을 올바르게 정의했는지 확인하세요. 이 예제에서는 잠재 고객 엔터티 테이블, 유형과 저장 프로시저가 삭제됩니다.

-----------------------------------------------------------------
-- Provide the value for the following parameters
DECLARE @prefix nvarchar(32) ='crm'
DECLARE @schema nvarchar(32) ='dbo'
DECLARE @entityName nvarchar(32) ='lead'
-----------------------------------------------------------------
DECLARE @sql nvarchar(max) = '';

IF @prefix != '' 
BEGIN
       SET @prefix = @prefix + '_'
END

SELECT @sql += 'DROP TABLE ' + QUOTENAME([TABLE_SCHEMA]) + '.' + QUOTENAME([TABLE_NAME]) + ';'
FROM [INFORMATION_SCHEMA].[TABLES]
WHERE [TABLE_TYPE] = 'BASE TABLE' AND [TABLE_NAME] like @prefix + @entityName  AND [TABLE_SCHEMA]= @schema;
PRINT @sql
EXEC SP_EXECUTESQL @sql;
PRINT 'Finished dropping the entity. Starting to drop the types associated with the entity'

SELECT @sql='';
SELECT @sql += 'DROP TYPE ' + QUOTENAME(SCHEMA_NAME([SCHEMA_ID])) + '.' + QUOTENAME([NAME]) + ';'
FROM SYS.TYPES
WHERE
  is_user_defined = 1
  AND (
    [NAME] LIKE @prefix + @entityName +'Type' 
    OR [NAME] LIKE @prefix + @entityName +'IdType'
  )
  AND [SCHEMA_ID] = SCHEMA_ID(@schema);
PRINT @sql
EXEC SP_EXECUTESQL @sql;

관리자 Power Platform에서 데이터 내보내기 서비스를 제거하는 방법

  1. 고급 설정으로 이동합니다.
  2. 설정 > 사용자 지정을 선택한 다음, 솔루션을 선택합니다.
  3. Microsoft Dynamics 365에서 게시한 DataExportService를 선택한 다음 삭제를 선택합니다.

테넌트의 Microsoft Entra 테넌트 ID 찾기

  1. Azure 포털에 로그인합니다.
  2. Azure 서비스에서 테넌트 속성을 선택합니다.
  3. 테넌트 ID 필드에서 값을 선택합니다.

내보내기 데이터 서비스에서 사용하는 Azure SQL 데이터베이스 정적 IP 주소

Azure SQL Database에서 서버 방화벽 설정을 선택하고 Azure 서비스에 대한 액세스 허용끄고 클라이언트 IP 추가를 선택한 다음 환경 지역에 적합한 IP 주소를 추가합니다. 추가 정보: Azure: Azure Portal을 사용하여 Azure SQL Database 서버 수준 방화벽 규칙 구성

하위 지역 새 IP 주소 기존 IP 주소
미국 서부 20.245.127.60 13.64.148.9
미국 동부 172.174.41.63 20.228.153.81
동아시아 20.239.192.9 104.208.84.217
동남 아시아 20.24.15.60 20.205.153.14
인도 중부 20.219.158.75 20.198.113.107
인도 남부 52.140.54.95 104.211.204.18
서유럽 20.126.43.104 40.68.244.253
북유럽 20.166.94.137 20.238.83.32
일본 서부 변경 없음 104.214.144.93
일본 동부 52.253.104.175 20.89.138.246
브라질 남부 4.228.211.102 20.197.186.17
오스트레일리아 남동부 변경 없음 20.70.112.80
오스트레일리아 동부 20.5.88.96 20.213.58.3
캐나다 중부 20.220.227.230 20.151.173.107
캐나다 동부 40.86.216.207 52.229.109.91
영국 서부 51.142.173.150 20.68.113.18
영국 남부 20.117.159.198 20.117.89.184

노트

북아메리카 고객은 미국 동부 및 미국 서부 모두의 승인된 목록에 IP 주소를 추가해야 합니다.

데이터 동기화 중단을 방지하기 위해 고객은 새 IP 주소와 이전 IP 주소를 유지해야 합니다.

알려진 문제점

동기화 실패 후 삭제된 레코드가 엔터티 테이블에 다시 삽입될 수 있음

동기화 실패에서 복구하는 경우 이전에 삭제된 레코드가 원래 엔터티 테이블에 다시 삽입될 수 있습니다. 동기화 실패가 발생했을 때 이 문제를 해결하려면 다음 단계를 수행합니다.

  1. 삭제 로그 쓰기를 사용할 수 있는 내보내기 프로필을 만듭니다. 삭제 로그 쓰기를 사용할 수 없는 기존 내보내기 프로필을 다시 만듭니다.

  2. 로그 삭제 테이블에 있는 레코드를 검색하는 SQL Azure 대상 데이터베이스에 대한 SQL 쿼리를 만들고 실행합니다. 하나 이상의 레코드가 발견되면 삭제된 레코드의 존재 여부를 나타냅니다.

  3. 로그 삭제 테이블에 하나 이상의 레코드가 있으면 로그 삭제 테이블에서 찾을 수 있는 레코드의 레코드 ID가 EntityName 테이블에 있는 레코드의 레코드 ID와 일치하고 삭제 로그의 버전 번호가 EntityName 테이블의 레코드의 버전 번호보다 큰 환경을 검색하는 SQL 쿼리를 만들고 실행합니다. 레코드 ID가 일치하는 경우 EntityName 테이블에서 레코드를 삭제합니다. 예를 들어, 로그 삭제의 거래처 ID 열에 있는 레코드 엔터티가 거래처 기반 엔터티 테이블의 거래처 ID 열에 있는 레코드 ID와 일치하고 삭제 로그의 버전 번호가 거래처 테이블의 버전 번호보다 큰 경우 거래처 기반 엔터티 테이블에서 레코드를 삭제합니다.

    중요

    비즈니스 요구와 조건에 따라 작동 시간이 아닌 경우 레코드 삭제에 대한 SQL 쿼리를 자주 실행하는 것이 좋습니다.

    엔터티 레코드 삭제에 대한 예제 쿼리.

DELETE A FROM [dbo].[prefix_account] A
WHERE id IN (SELECT CONVERT(uniqueidentifier, recordid) FROM [dbo].[prefix_DeleteLog] DL WHERE DL.entityname ='account'
AND DL.VersionNumber > A.VersionNumber)

데이터 내보내기를 지원하지 않는 엔터티

여기에 나열된 엔터티는 변경 내용 추적을 지원하지만 데이터 내보내기 서비스를 사용하여 데이터 내보내기는 지원하지 않습니다.

Entity 테이블 이름 문제 해결 방안
작업 ActivityPointerBase 전화 통화, 약속, 전자 메일 및 작업과 같은 내보내기에 사용할 특정 활동 엔터티를 선택합니다.

허용되는 최대 행 크기(8K) 보다 큰 행을 만들 수 없습니다.

오류 로그에 "8060의 허용되는 최대 행 크기보다 큰 크기(size)의 행을 만들 수 없습니다"가 표시되는 경우 허용되는 최대 행 크기 제한을 초과하는 문제가 발생합니다. 데이터 내보내기 서비스는 허용되는 최대 행 크기 8k보다 큰 행 크기를 지원하지 않습니다. 이 문제를 해결하려면 행 크기 제한을 준수해야 합니다.

소스의 문자열 길이가 ColumnName에 대한 대상 스키마보다 깁니다.

오류 로그에 "[ColumnName, MaxDataLength]에 대한 대상 스키마보다 긴 소스의 문자열 길이"를 표시하는 경우 원본 데이터의 문자열 길이가 대상보다 긴 문제가 발생합니다. 원본 데이터의 문자열 길이가 대상보다 긴 경우 대상에 쓰기가 실패합니다. 이 문제를 해결하려면 데이터의 크기를 줄이거나 DB에서 수동으로 MaxLength보다 크게 열 길이를 늘려야 합니다.

첨부파일을 지원하지 않음

주석 테이블의 documentbody와 같은 첨부파일 내보내기는 지원되지 않습니다.

개인정보보호 통지

데이터 내보내기 서비스를 사용하여 Dynamics 365 내에서 데이터 내보내기 프로필을 활성화하면 프로필에 추가된 엔터티의 데이터가 Azure로 전송됩니다. 초기 동기화에는 내보내기 프로필에 추가된 엔터티에 연결된 데이터가 모두 포함되지만 동기화한 후에는 데이터 내보내기 서비스에 지속적으로 전송되는 새로운 변경 내용만 포함됩니다. 데이터 내보내기 서비스로 전송된 데이터는 Azure Service Bus 및 Azure Storage에 임시로 저장되고 Azure Service Fabric에서 처리되며 최종적으로 Azure 구독에 지정된 대상 데이터베이스에 동기화(삽입, 업데이트 또는 삭제)됩니다. 데이터가 동기화되면 Azure Service Bus 및 Azure Storage에서 삭제됩니다. 데이터 동기화 중에 오류가 발생하면, 엔터티 유형, 레코드 ID 및 동기화 타임스탬프에 해당하는 최소 데이터가 Azure Storage에 저장되어 업데이트되지 않은 레코드 목록을 다운로드할 수 있습니다.

관리자는 데이터 내보내기 프로필을 언제든지 활성화하여 데이터 동기화를 중지할 수 있습니다. 또한 관리자는 내보내기 프로필을 삭제하여 실패한 레코드 로그를 제거하고 데이터 내보내기 서비스 솔루션을 제거하여 데이터 내보내기 서비스 사용을 중단할 수 있습니다.

데이터 동기화는 Dynamics 365과 데이터 내보내기 서비스 간에 안전한 방식으로 지속적으로 일어납니다. 데이터는 Dynamics 365과 데이터 내보내기 서비스 간에 지속적으로 교환될 때 암호화됩니다.

데이터 내보내기 서비스에 포함된 Azure 구성 요소 및 서비스는 다음 섹션에서 자세히 설명합니다.

Microsoft Azure 신뢰 센터

Azure Service Fabric

API를 제공하고 Azure VM을 계산하여 Dynamics 365에서 받은 레코드 동기화 알림을 처리한 후 대상 데이터베이스에서 레코드 데이터를 삽입, 업데이트 또는 삭제하도록 처리합니다. Azure Service Fabric 런타임에서 관리되는 가상 컴퓨터에 배포되는 마이크로 서비스는 데이터 동기화와 관련된 모든 계산 서비스를 처리합니다.

Azure Service Bus

Dynamics 365에서 Azure Service Fabric의 계산 노드에서 처리되는 동기화 알림 메시지를 삽입하는 메시지 버스를 제공합니다. 각 메시지는 데이터를 동기화하는 데 필요한 조직 ID 및 레코드와 같은 정보를 저장합니다. Azure Service Bus의 데이터는 미사용 시 암호화되어 있고 데이터 내보내기 서비스에서만 액세스할 수 있습니다.

Azure 블롭 스토리지

레코드 동기화 알림의 데이터가 너무 커서 메시지에 저장할 수 없거나 일시적 오류가 발생하여 동기화 알림을 처리하지 못할 경우 데이터가 Azure Blob Storage에 임시로 저장됩니다. 이러한 Blob은 대칭 및 비대칭 암호화 지원 및 Azure Key Vault와의 통합을 제공하는 Azure Storage SDK의 최신 기능을 활용하여 암호화됩니다.

Azure SQL

Azure SQL Database는 데이터 내보내기 프로필 구성 및 데이터 동기화 메트릭을 저장합니다.

참조 항목

엔티티 관계 개요
데이터 내보내기 서비스
팀 블로그: 데이터 내보내기 서비스 소개