Serviço de Exportação de Dados

 

Publicado: janeiro de 2017

Aplicável a: Dynamics 365 (online)

A Exportação de Dados é um serviço complementar disponibilizado como uma solução Microsoft Dynamics 365 (online) que adiciona a capacidade de replicar dados Dynamics 365 (online) em um repositório do Banco de Dados SQL do Microsoft Azure em uma assinatura do Microsoft Azure de propriedade do cliente. Os destinos-alvo compatíveis são o Banco de Dados SQL do Microsoft Azure e o Microsoft Azure SQL Server nas máquinas virtuais do Microsoft Azure. A Exportação de Dados sincroniza de forma inteligente e completa o esquema e os dados do Dynamics 365 no início e, daí em diante, sincroniza continuamente conforme ocorrerem alterações (alterações delta) no sistema do Microsoft Dynamics 365 (online).

O Serviço de Exportação de Dados fornece uma interface de configuração de gerenciamento e administração contínua do serviços no Dynamics 365 (online). Para obter mais informações, consulte TechNet: Exportação de Dados. Esse tópico explica a interface programática correspondente e os problemas desse serviço.

Pré-requisitos para usar o Serviço de Exportação de Dados

Como esse serviço requer acesso a um Banco de Dados SQL do Microsoft Azure externo do Dynamics 365 (online), uma série de pré-requisitos deve ser atendida antes de você poder acessar esse serviço com sucesso. Os seguintes pré-requisitos são mais completamente explicados da perspectiva de um administrador na seção TechNet: Pré-requisitos para usar o Serviço de Exportação de Dados.

Seu serviço Dynamics 365 (online) deve ser configurado para que:

  • Você precisa ter Atualização de dezembro de 2016 para Microsoft Dynamics 365 (online) ou uma instância posterior com a cópia de dados completa ou original. Para obter mais informações, consulte Copiar uma instância.

  • As entidades que serão exportadas sejam habilitadas com o controle de alterações. Para obter mais informações, consulte Usar o controle de alterações para sincronizar dados com sistemas externos.

  • O código seja executado no contexto de um usuário com direito de acesso de administrador do sistema.

Observação

Observe que o acesso programático a esse serviço não requer a instalação da solução gerenciada associada da Exportação de Dados.

O Banco de Dados SQL do Azure de destino deve ser configurado para que:

  • A assinatura seja compatível com o volume de dados sendo replicados na sua instância do Dynamics 365.

  • As configurações do firewall permitam acesso do endereço de IP do seu Serviço de Exportação de Dados. Para obter mais informações, consulte Configurar uma regra de firewall no nível do servidor do Banco de Dados do SQL do Azure usando o Portal do Azure.

  • Recomenda-se que a opção “Permitir acesso a serviços do azure” esteja habilitada.

  • Os usuários do banco de dados, especificados na cadeia de caracteres da conexão de exportação de dados, tenham as permissões de criação e alteração adequadas no banco de dados de destino. No mínimo, incluem: CRTB, CRTY, CRVW, CRPR e ALUS. Para obter mais informações, consulte Permissões (Mecanismo de Banco de Dados).

  • Pelo menos um usuário tenha permissões extensivas no esquema. O seguinte script cria um novo usuário.

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

Para soluções e serviços online, o Azure fornece um serviço Cofre de Chaves para proteger chaves criptografadas, senhas e outros dados sigilosos. Para usar o Azure Key Vault, esse serviço do cliente deve estar configurado para que a permissão seja dada para o "Serviço de Exportação de Dados do Dynamics 365", que é usado para armazenar de forma segura a cadeia de conexão do SQL Azure. Para executar essa configuração com um script de PowerShell, consulte TechNet: COmo definir o Azure Key Vault. Como alternativa, esse serviço pode ser gerenciado por meio de seu API REST; consulte Gerenciamento de Cofre de Chaves.

Também se aconselha que você adicione o domínio https://discovery.crmreplication.azure.net/ à lista de sites confiáveis no seu navegador e habilite os pop-ups desse site.

Programação para o Serviço de Exportação de Dados

O Serviço de Exportação de Dados expõe uma API baseada em REST que é dividida em dois grupos: um conjunto de operações Metadata para explorar a estrutura organizacional, os relacionamentos e as informações de conexão do Dynamics 365; e um conjunto de operações Profiles para configurar e gerenciar cada replicação de dados. Essa API está completamente definida e documentada nas URLs do seguinte Swagger:

Ponto de extremidade do swagger

Descrição

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

Definição JSON da API do Serviço de Exportação de Dados para uso por ferramentas de desenvolvedor e processos dinâmicos

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

A versão de fácil uso dessa API para referência do desenvolvedor

Referência rápida da API

Para conveniência do leitor, essas interfaces são resumidas nas seguintes tabelas.

Operações de metadados (https://discovery.crmreplication.azure.net/crm/exporter/metadata/)

Recurso

Métodos

Descrição

organizations

GET

Obtém detalhes organizacionais de todas as organizações a que o usuário atual pertence

discover

GET

Obtém detalhes organizacionais da organização especificada

connector

GET

Obtém detalhes de conector da organização especificada

entities

GET

Obtém todas as entidades públicas exportáveis da organização especificada

relationships

GET

Obtém todas os relacionamentos exportáveis da organização especificada

hasorgacceptedprivacyterms

GET

Verifica se a organização associada aceitou os termos de privacidade

acceptprivacyterms

Postar

Aceita a organização especificada para acesso a dados

Operações de perfil ([Organization-URI]/crm/exporter/)

Recurso

Métodos

Descrição

profiles

GET, POST

Obtém todos os perfis da organização especificada, cria um novo perfil de exportação

profiles/{id}

GET, PUT, DELETE

Obtém, atualiza ou exclui um perfil específico

profiles/{id}/activate

POST

Ativa um perfil, que inicia a replicação dos metadados e dados associados

profiles/{id}/activatemetadata

POST

Ativa apenas perfis de replicação de metadados

profiles/{id}/activatedata

POST

Ativa apenas perfis de replicação de dados

profiles/{id}/deactivate

POST

Desativa um perfil

profiles/{id}/test

GET

Executa operações de teste em um perfil existente

profiles/validate

POST

Executa operações de teste em uma descrição de perfil antes de criá-lo

profiles/{id}/failures

GET

Obtém a cadeia de caracteres de conexão para um blob que contém detalhes sobre falhas de um determinado perfil

Acesso

Como apenas Dynamics 365 administradores do sistema são autorizados a realizar operações de exportação de dados, essas APIs impõem a autorização de chamada por meio do uso de tokens de segurança do Azure Active Directory (AAD). O seguinte trecho de código demonstra como gerar um token para um aplicativo Web usando o nome e a senha do administrador. Você deve substituir AppId, crmAdminUser e crmAdminPassword com os valores adequados para seu serviço. Essa abordagem pode ser usada para desenvolvimento e teste. No entanto, meios mais seguros devem ser usados para produção, como o uso do Cofre de Chaves do 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;

Para instruções sobre como obter um AppId consulte Autorizar acesso a aplicativos Web usando OAuth 2.0 e Azure Active Directory. Para obter mais informações sobre segurança de usuário do Azure, consulte Cenários de autenticação do Azure AD.

Tratamento de erro e falha ao processar

Depois que você configura um perfil corretamente, o processo de sincronização geralmente é altamente confiável. Porém, se houver falha na sincronização de um registro, o processamento de falha a seguir será aplicado:

  1. Depois do intervalo de nova tentativa configurado, é feita outra tentativa para sincronizar o registro. Isso é repetido até o número máximo de novas tentativas configurado.

  2. O registro é marcado como processado.

  3. Uma entrada de registro com falha correspondente é gravada no log de erros.

  4. O próximo registro é processado.

Como o registro é marcado como processado, nenhuma tentativa posterior será feita para sincronizar o registro até que seu valor ou esquema seja alterado. (Observe que nova gravação de valores idênticos em uma instância de entidade também a marca como modificada).

As entradas no log de erros são somente gravação. Êxitos ou falhas futuras durante a sincronização do mesmo registro não alteram as entradas anteriores desse registro. Por exemplo, uma entrada de falha permanecerá no log de erros mesmo depois de o registro ser sincronizado com êxito durante um ciclo de sincronização posterior.

Cuidado

Essa lógica de processamento de erro deverá ser alterada em futuras versões desse serviço.

Essas entradas de falha podem ser recuperadas por meio da solicitação Obter detalhes sobre falhas em um determinado perfil. A resposta retorna em um URI para um blob do Azure que contém as informações sobre as falhas. Cada linha contém os seguintes campos separados por vírgulas (novas linhas adicionadas para clareza):

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

Por exemplo:

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'.

Confira Também

Gerencie seus dados no Microsoft Dynamics 365
Importar dados

Microsoft Dynamics 365

© 2017 Microsoft. Todos os direitos reservados. Direitos autorais