다음을 통해 공유


데이터 내보내기 서비스

 

게시 날짜: 2017년 1월

적용 대상: Dynamics 365 (online)

Data Export는 Microsoft Dynamics 365(온라인) 솔루션으로 사용할 수 있는 추가 기능 서비스로 고객 소유 Microsoft Azure 구독에서 Dynamics 365(온라인) 데이터를 Microsoft Azure SQL 데이터베이스 스토어에 복제하는 기능을 추가합니다. 지원되는 목표 대상은 Microsoft Azure 가상 컴퓨터의 Microsoft Azure SQL 데이터베이스 및 Microsoft Azure SQL Server입니다. 데이터 내보내기는 지능적으로 전체 Dynamics 365 스키마 및 데이터를 처음 동기화하고 그 이후로 Microsoft Dynamics 365(온라인) 시스템에서 변경이 발생할 때(델타 변경) 지속적으로 동기화합니다.

데이터 내보내기 서비스는 Dynamics 365(온라인) 내에서 이 서비스의 구성 관리와 지속적인 관리를 위한 인터페이스를 제공합니다. 자세한 내용은 TechNet: 데이터 내보내기를 참조하십시오. 이 항목에서는 해당 프로그래밍 인터페이스 및 이 서비스의 문제를 설명합니다.

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

이 서비스를 사용하려면 Dynamics 365(온라인)에서 외부 Microsoft Azure SQL 데이터베이스에 액세스해야 하기 때문에 이 서비스에 성공적으로 액세스하기 전에 다양한 전제 조건이 충족되어야 합니다. 다음과 같은 전제 조건은 TechNet: 데이터 내보내기 서비스를 사용하기 위한 전제 조건 섹션에 관리자의 관점에서 자세히 설명되어 있습니다.

다음을 위해 사용자 Dynamics 365(온라인) 서비스를 구성해야 합니다.

  • 원본 또는 전체 데이터 복사본의 Microsoft Dynamics 365용 2016년 12월 업데이트(온라인) 이상의 인스턴스가 있어야 합니다. 자세한 내용은 인스턴스 복사를 참조하십시오.

  • 내보낼 엔터티는 변경 내용 추적을 사용하도록 설정됩니다. 자세한 내용은 변경 내용 추적을 사용하여 데이터를 외부 시스템과 동기화을 참조하십시오.

  • 시스템 관리자 보안 역할을 가지고 있는 사용자의 컨텍스트 내에서 코드는 실행됩니다.

참고

프로그래밍 방식으로 이 서비스에 액세스하면 연결된 데이터 내보내기 솔루션을 설치할 필요가 없습니다.

다음을 위해 대상 Azure SQL 데이터베이스를 구성해야 합니다.

  • 구독에서 사용자의 Dynamics 365 인스턴스에서 복제되는 데이터의 양을 지원해야 합니다.

  • 데이터 내보내기 서비스의 IP 주소에서 액세스를 허용하도록 방화벽이 설정되어야 합니다. 자세한 내용은 Azure 포털을 사용하여 Azure SQL 데이터베이스 서버 수준 방화벽 규칙 구성을 참조하십시오.

  • "Azure 서비스에 액세스 허용" 옵션을 사용하도록 설정하는 것이 좋습니다.

  • 데이터 내보내기 연결 문자열에 지정된 데이터베이스 사용자는 대상 데이터베이스에 대한 사용 권한을 적절히 만들고 변경해야 합니다. 여기에 적어도 CRTB, CRTY, CRVW, CRPR, 및 ALUS가 포함됩니다. 자세한 내용은 권한(데이터베이스 엔진)을 참조하십시오.

  • 한 명 이상의 사용자에게 스키마에 광범위한 권한이 있습니다. 다음 스크립트는 새 사용자를 만듭니다.

USE MASTER;
CREATE LOGIN NewUser WITH PASSWORD='newpassword';

USE DESTINATIONDATABASE;
CREATE USER NewUser FOR LOGIN NewUser
GRANT CREATE TABLE, CREATE TYPE, CREATE VIEW, CREATE PROCEDURE, ALTER ANY USER to NewUser
GRANT ALTER, REFERENCES, INSERT, DELETE, UPDATE, SELECT, EXECUTE ON SCHEMA::dbo TO NewUser

온라인 솔루션 및 서비스의 경우 Azure는 암호화 키, 암호 및 기타 기밀 정보를 보호하기 위한 주요 자격 증명 모음 서비스를 제공합니다. Azure 주요 자격 증명 모음을 사용하려면 이 고객 소유 서비스를 구성하여 "Dynamics 365 데이터 내보내기 서비스"에 권한을 부여해야 합니다. 이 서비스는 안전하게 SQL Azure 연결 문자열을 저장하는 데 사용됩니다. PowerShell 스크립트를 사용하여 이 구성을 수행하려면 TechNet: Azure 주요 자격 증명 모음 설정 방법을 참조하십시오. 또한 REST API로 이 서비스를 관리할 수 있습니다. 주요 자격 증명 모음 관리를 참고하십시오.

또한 브라우저에서 이 사이트의 팝업을 사용할 수 있도록 신뢰할 수 있는 사이트 목록에 도메인 https://discovery.crmreplication.azure.net/을 추가하는 것이 좋습니다.

데이터 내보내기 서비스 프로그래밍

데이터 내보내기 서비스는 두 그룹으로 구분되는 REST 기반 API를 노출합니다. Dynamics 365 조직 구조, 관계 및 연결 정보를 탐색하는 일련의 Metadata 작업 및 각 데이터 복제 구성 및 관리에 대한 일련의 Profiles 작업입니다. 이 API는 완전하게 정의되고 다음 Swagger URL에 문서화됩니다.

Swagger 끝점

설명

https://discovery.crmreplication.azure.net/swagger/docs/2016-01-01

개발자 도구 및 동적 프로세스에서 사용할 수 있도록 데이터 내보내기 서비스 API의 JSON 정의

https://discovery.crmreplication.azure.net/swagger/ui/index#

개발자 참조를 위한 이 API의 사용자 친화적인 버전

API 빠른 참조

독자의 편의를 위해 이러한 인터페이스는 다음 표에 요약되어 있습니다.

메타데이터 작업(https://discovery.crmreplication.azure.net/crm/exporter/metadata/)

리소스

메서드

설명

조직을

Yammer 이용

현재 사용자가 속한 모든 조직에 대한 조직의 세부 정보 가져오기

검색

Yammer 이용

지정된 조직에 대한 조직 세부 정보 가져오기

커넥터

Yammer 이용

지정된 조직에 대한 커넥터 세부 정보 가져오기

엔터티

Yammer 이용

지정된 조직에 대한 내보낼 수 있는 모든 공용 엔터티 가져오기

관계

Yammer 이용

지정된 조직에 대한 내보낼 수 있는 모든 관계 가져오기

hasorgacceptedprivacyterms

Yammer 이용

관련된 조직이 개인 정보 보호 약관을 수락했는지 확인

acceptprivacyterms

포스트

지정한 조직의 데이터 액세스 허용

프로필 작업([Organization-URI]/crm/exporter/)

리소스

메서드

설명

프로필

GET, POST

지정된 조직에 대한 모든 프로필 가져오기, 새 내보내기 프로필 만들기

profiles/{id}

GET, PUT, DELETE

특정 프로필 가져오기, 업데이트 또는 삭제

profiles/{id}/activate

포스트

연결된 메타 데이터와 데이터의 복제를 시작하는 프로필 활성화

profiles/{id}/activatemetadata

포스트

메타 데이터 복제에 대한 프로필만 활성화

profiles/{id}/activatedata

포스트

데이터 복제에 대한 프로필만 활성화

profiles/{id}/deactivate

포스트

프로필 비활성화

profiles/{id}/test

Yammer 이용

기존 프로필에 대한 테스트 작업 수행

profiles/validate

포스트

프로필 설명을 만들기 전에 테스트 작업 수행

profiles/{id}/failures

Yammer 이용

주어진 프로필에 대한 오류 정보를 포함하는 BLOB에 연결 문자열 가져오기

액세스 권한 얻기

Dynamics 365 시스템 관리자만 데이터 내보내기 작업을 수행할 권한이 있기 때문에 이러한 API는 Azure Active Directory(AAD) 보안 토큰을 사용하여 호출자 인증을 실행합니다. 다음 코드 조각은 관리자의 이름과 암호를 사용하여 웹 응용 프로그램에 대한 이러한 토큰을 생성하는 방법을 보여줍니다.AppId, crmAdminUsercrmAdminPassword를 귀하의 서비스에 적합한 값으로 교체해야 합니다. 이 방법은 개발 및 테스트를 위해 사용할 수 있지만 Azure 주요 자격 증명 모음과 같은 생산에는 보다 안전한 방법을 사용해야 합니다.

//Reference Azure AD authentication Library (ADAL)  
using Microsoft.IdentityModel.Clients.ActiveDirectory;
   . . .
    string yourAppClientID = "[app-associated-GUID]";   //Your AAD-registered AppId 
    string crmAdminUser = "admin1@contoso.com";  //Your CRM administrator user name
    string crmAdminPassword = "Admin1Password";  //Your CRM administrator password; 
    //For interactive applications, there are overloads of AcquireTokenAsync() which prompt for password. 
    var authParam = AuthenticationParameters.CreateFromResourceUrlAsync(new 
        Uri("https://discovery.crmreplication.azure.net/crm/exporter/aad/challenge")).Result;
    AuthenticationContext authContext = new AuthenticationContext(authParam.Authority, false);
    string token = authContext.AcquireTokenAsync(authParam.Resource, yourAppClientID, 
        new UserCredential(crmAdminUser, crmAdminPassword)).Result.AccessToken;

AppId를 얻는 방법에 대한 지침은 OAuth 2.0 및 Azure Active Directory를 사용하여 웹 응용 프로그램에 대한 액세스 권한 부여참조하십시오. Azure 사용자 보안에 대한 자세한 내용은 Azure AD 인증 시나리오을 참조하십시오.

오류 처리 및 실패 프로세스

프로필이 올바르게 구성되면 동기화 프로세스는 일반적으로 매우 안정성이 높습니다. 그러나 레코드를 동기화하지 못하면 다음과 같은 오류 프로세스가 적용됩니다.

  1. 구성된 재시도 간격이 지나면 레코드를 동기화하는 또 다른 시도가 이루어집니다. 이것은 구성된 최대 재시도 횟수까지 반복됩니다.

  2. 레코드가 처리됨으로 표시됩니다.

  3. 해당되는 실패한 레코드 항목이 오류 로그에 기록됩니다.

  4. 다음 레코드가 처리됩니다.

레코드가 처리된 것으로 표시되기 때문에 해당 값이나 스키마가 변경될 때까지 레코드를 동기화하지 않습니다. (또한 동일한 값을 엔터티 인스턴스에 다시 작성하면 수정된 것으로 표시됩니다.)

오류 로그의 항목은 쓰기 전용입니다. 동일한 레코드를 동기화 하는 동안 이후의 성공 또는 실패는 이 레코드에 대한 이전 항목을 변경하지 않습니다. 예를 들어, 일부 이후 동기화 주기 동안 레코드가 성공적으로 동기화된 후에도 오류 항목은 오류 로그에 남아있습니다.

주의

이 오류 처리 논리는 이 서비스의 이후 릴리스에서 변경될 수 있습니다.

이러한 오류 항목은 주어진 프로필에 대한 오류 정보 가져오기 요청을 통해 검색할 수 있습니다. 응답은 실패 정보를 포함하는 Azure BLOB에 대한 URI를 반환합니다. 각 줄에는 다음과 같은 쉼표로 구분된 필드가 있습니다(명확성을 위해 새 줄 추가됨).

Entity: <entity-name>, 
RecordId: <”N/A” | guid>, 
NotificationTime: <datetime>, 
ChangeType: <sync-type>,
FailureReason: <description>

예를 들면 다음과 같습니다.

Entity: lead, 
RecordId: N/A, NotificationTime: , ChangeType: Trigger Initial Export, FailureReason: There is already an object named 'hatest201_lead' in the database.
Entity: account, RecordId: b2a19cdd-88df-e311-b8e5-6c3be5a8b200, NotificationTime: 8/31/2016 6:50:38 PM, ChangeType: New, FailureReason: Invalid object name 'dbo.hatest201_account'.

참고 항목

데이터를 Microsoft Dynamics 365에서 관리하십시오
데이터 가져오기

Microsoft Dynamics 365

© 2017 Microsoft. All rights reserved. 저작권 정보