Compartir a través de


Servicio de exportación de datos

 

Publicado: enero de 2017

Se aplica a: Dynamics 365 (online)

Exportación de datos es un servicio complementario habilitado como solución de Microsoft Dynamics 365 (online) que agrega la capacidad de replicar los datos de Dynamics 365 (online) en un almacén de base de datos de Microsoft Azure SQL en una suscripción de Microsoft Azure propiedad del cliente. Los objetivos de destino admitidos son la base de datos de Microsoft Azure SQL y Microsoft Azure SQL Server en las máquinas virtuales de Microsoft Azure. Exportación de datos sincroniza inteligentemente los esquemas y datos completos de Dynamics 365 inicialmente y después sincroniza de manera continua cuando se producen cambios (cambios delta) en el sistema Microsoft Dynamics 365 (online).

El servicio Exportación de datos proporciona una interfaz para administrar la configuración y la administración continua de este servicio desdeDynamics 365 (online). Para obtener más información, vea TechNet: Exportación de datos. En este tema se explican la interfaz programática y los problemas correspondientes para este servicio.

Los requisitos previos para utilizar el servicio Exportación de datos

Puesto que este servicio necesita acceso a una base de datos de Microsoft Azure SQL externa desde Dynamics 365 (online), deben cumplirse varios requisitos previos para poder tener acceso correctamente a este servicio. Los siguientes requisitos previos se describen más detalladamente desde el punto de vista de un administrador en la sección TechNet: Requisitos previos para usar el servicio Exportación de datos.

El servicio Dynamics 365 (online) deben configurarse para que:

  • Debe tener Actualización de diciembre de 2016 para Microsoft Dynamics 365 (online) o una instancia posterior con copia de datos original o completa. Para obtener más información, vea Copiar una instancia.

  • Las entidades que se exportarán están habilitadas con seguimiento de cambios. Para obtener más información, vea Uso del seguimiento de cambios para sincronizar los datos con sistemas externos.

  • El código se ejecuta en el contexto de un usuario con el rol de seguridad Administrador del sistema.

Nota

Tenga en cuenta que el acceso mediante programación a este servicio no requiere la instalación de la solución administrada Exportar datos asociada.

La base de datos de Azure SQL de destino debe estar configurada de modo que:

  • La suscripción debe admitir el volumen de datos que se replican desde la instancia de Dynamics 365.

  • Las configuraciones de firewall deben permitir el acceso desde la dirección IP del servicio Exportación de datos. Para más información: vea Microsoft Azure: Configurar una regla de firewall a nivel de servidor de base de datos de Azure mediante Azure Portal.

  • Se recomienda que la opción “Permitir acceso a servicios de Azure” esté habilitada.

  • El usuario de la base de datos, especificado en la cadena de conexión de Exportación de datos, debe tener los permisos adecuados para crear y modificar en la base de datos de destino. Como mínimo incluyen: CRTB, CRTY, CRVW, CRPR, y ALUS. Para obtener más información, consulte Permisos (motor de base de datos).

  • Al menos un usuario tiene permisos extensos en el esquema. El siguiente script crea nuevo usuario de ese tipo.

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 soluciones y servicios en línea, Azure proporciona un servicio de Almacén de claves para salvaguardar claves criptográficas, contraseñas y otros secretos. Para usar Almacén de claves de Azure, este servicio propiedad del cliente se debe configurar para conceder permiso a "Servicio de exportación de datos de Dynamics 365”, que se usará para almacenar con seguridad la cadena de conexión de SQL Azure. Para realizar esta configuración con un script de PowerShell, consulte TechNet: Cómo configurar un Almacén de claves de Azure. Como alternativa, este servicio se puede administrar con su API de REST; consulte Administración del Almacén de claves.

También se aconseja que agregue el dominio https://discovery.crmreplication.azure.net/ a la lista de sitios de confianza en el explorador y habilite ventanas emergentes para este sitio.

Programación para el servicio Exportación de datos

El servicio Exportación de datos expone una API basada en REST que se divide en dos grupos: un conjunto de operaciones de Metadata para explorar la estructura organizativa de Dynamics 365, relaciones e información de conexión; y un conjunto de operaciones de Profiles para configurar y administrar cada replicación de datos. Esta API se define y se documenta completamente en las direcciones URL Swagger siguientes:

Extremo de Swagger

Descripción

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

Definición de JSON de la API del Servicio de exportación de datos para uso por las herramientas de desarrollo y procesos dinámicos

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

La versión de fácil uso de esta API para referencia del desarrollador

Referencia rápida de la API

Para comodidad del lector, estas interfaces se resumen en las siguientes tablas.

Operaciones de metadatos (https://discovery.crmreplication.azure.net/crm/exporter/metadata/)

Recurso

Métodos

Descripción

organizations

GET

Obtener detalles organizativos de todas las organizaciones a las que el usuario actual pertenece

discover

GET

Obtener los detalles organizativos de la organización especificada

connector

GET

Obtener los detalles de conector de la organización especificada

entities

GET

Obtener todas las entidades públicas exportables para la organización especificada

relationships

GET

Obtener todas las relaciones exportables para la organización especificada

hasorgacceptedprivacyterms

GET

Comprobar si la organización asociada ha aceptado los términos de privacidad

acceptprivacyterms

POST

Aceptar la organización especificada para acceso a datos

Operaciones con perfiles ([Organization-URI]/crm/exporter/)

Recurso

Métodos

Descripción

profiles

GET, POST

Obtener todos los perfiles de la organización especificada, crear un nuevo perfil de exportación

profiles/{id}

GET, PUT, DELETE

Obtener, actualizar o eliminar un perfil concreto

profiles/{id}/activate

Publicación

Activar un perfil, que inicia la replicación de los datos y metadatos asociados

profiles/{id}/activatemetadata

Publicación

Activar perfil para replicación de metadatos solo

profiles/{id}/activatedata

Publicación

Activar perfil para replicación de datos solo

profiles/{id}/deactivate

Publicación

Desactivar un perfil

profiles/{id}/test

Obtener Yammer

Realizar operaciones de prueba en un perfil existente

profiles/validate

Publicación

Realizar operaciones de prueba en una descripción de perfil antes de crearla

profiles/{id}/failures

Obtener Yammer

Obtener la cadena de conexión a un blob que contiene detalles erróneos para un perfil determinado

Obtener acceso

Puesto que sólo están autorizados los administradores del sistema de Dynamics 365 a realizar operaciones de exportación de datos, estas API aplican autorización de autor de llamada mediante el uso de tokens de seguridad de Azure Active Directory (AAD). El fragmento de código siguiente demuestra cómo generar dicho token para una aplicación web mediante el nombre y la contraseña del administrador. Debe reemplazar el AppId, crmAdminUser y crmAdminPassword con los valores adecuados al servicio. Este método se puede usar para desarrollo y prueba, pero deben usarse medios más seguros para producción, como el uso del Almacén de claves de 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 instrucciones sobre cómo obtener una AppId consulte Autorizar acceso a aplicaciones web mediante OAuth 2.0 y Azure Active Directory. Para obtener más información sobre la seguridad de usuarios de Azure, consulte Escenarios de autenticación para Azure AD.

Gestión de errores y procesamiento de errores

Una vez que un perfil está correctamente configurado, el proceso de sincronización suele ser muy fiable. Sin embargo, si un registro no se sincroniza, se aplica el procesamiento de errores siguiente:

  1. Después del intervalo de reintento configurado, se realiza otro intento de sincronizar el registro. Esto se repite hasta el número máximo configurado de reintentos.

  2. El registro se marca como procesado.

  3. Una entrada de registro de error correspondiente se escribe en el registro de errores.

  4. Se procesa el siguiente registro.

Puesto que el registro está marcado como procesado, no se realiza ningún intento futuro de sincronizar el registro hasta su valor o esquema cambia. (Tenga en cuenta que al volver a escribir valores idénticos en una instancia de entidad también se marca como modificada.)

Las entradas en el registro de errores son de solo escritura. Los éxitos o errores futuros durante la sincronización del mismo registro no producen la alteración de entradas pasadas para este registro. Por ejemplo, una entrada de error permanecerá en el registro de errores incluso después que el registro se haya sincronizado correctamente en algún ciclo de sincronización posterior.

Precaución

Esta lógica de procesamiento de errores está sujeta a modificaciones en versiones futuras de este servicio.

Estas entradas de error se pueden recuperar a través de la solicitud Obtener detalles de error para un perfil determinado. La respuesta devuelve un URI a un blob de Azure que contiene información de error. Cada línea tiene los siguientes campos separados por comas (se agregan nuevas líneas por claridad):

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

Por ejemplo:

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

Ver también

Administrar sus datos en Microsoft Dynamics 365
Importar datos

Microsoft Dynamics 365

© 2017 Microsoft. Todos los derechos reservados. Copyright