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 |
Obtém detalhes organizacionais de todas as organizações a que o usuário atual pertence |
|
discover |
Obtém detalhes organizacionais da organização especificada |
|
connector |
Obtém detalhes de conector da organização especificada |
|
entities |
Obtém todas as entidades públicas exportáveis da organização especificada |
|
relationships |
Obtém todas os relacionamentos exportáveis da organização especificada |
|
hasorgacceptedprivacyterms |
Verifica se a organização associada aceitou os termos de privacidade |
|
acceptprivacyterms |
Aceita a organização especificada para acesso a dados |
Operações de perfil ([Organization-URI]/crm/exporter/)
Recurso |
Métodos |
Descrição |
---|---|---|
profiles |
Obtém todos os perfis da organização especificada, cria um novo perfil de exportação |
|
profiles/{id} |
Obtém, atualiza ou exclui um perfil específico |
|
profiles/{id}/activate |
Ativa um perfil, que inicia a replicação dos metadados e dados associados |
|
profiles/{id}/activatemetadata |
Ativa apenas perfis de replicação de metadados |
|
profiles/{id}/activatedata |
Ativa apenas perfis de replicação de dados |
|
profiles/{id}/deactivate |
Desativa um perfil |
|
profiles/{id}/test |
Executa operações de teste em um perfil existente |
|
profiles/validate |
Executa operações de teste em uma descrição de perfil antes de criá-lo |
|
profiles/{id}/failures |
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:
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.
O registro é marcado como processado.
Uma entrada de registro com falha correspondente é gravada no log de erros.
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