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 |
Obtener detalles organizativos de todas las organizaciones a las que el usuario actual pertenece |
|
discover |
Obtener los detalles organizativos de la organización especificada |
|
connector |
Obtener los detalles de conector de la organización especificada |
|
entities |
Obtener todas las entidades públicas exportables para la organización especificada |
|
relationships |
Obtener todas las relaciones exportables para la organización especificada |
|
hasorgacceptedprivacyterms |
Comprobar si la organización asociada ha aceptado los términos de privacidad |
|
acceptprivacyterms |
Aceptar la organización especificada para acceso a datos |
Operaciones con perfiles ([Organization-URI]/crm/exporter/)
Recurso |
Métodos |
Descripción |
---|---|---|
profiles |
Obtener todos los perfiles de la organización especificada, crear un nuevo perfil de exportación |
|
profiles/{id} |
Obtener, actualizar o eliminar un perfil concreto |
|
profiles/{id}/activate |
Activar un perfil, que inicia la replicación de los datos y metadatos asociados |
|
profiles/{id}/activatemetadata |
Activar perfil para replicación de metadatos solo |
|
profiles/{id}/activatedata |
Activar perfil para replicación de datos solo |
|
profiles/{id}/deactivate |
Desactivar un perfil |
|
profiles/{id}/test |
Realizar operaciones de prueba en un perfil existente |
|
profiles/validate |
Realizar operaciones de prueba en una descripción de perfil antes de crearla |
|
profiles/{id}/failures |
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:
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.
El registro se marca como procesado.
Una entrada de registro de error correspondiente se escribe en el registro de errores.
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