Servizio di esportazione dati
Data di pubblicazione: gennaio 2017
Si applica a: Dynamics 365 (online)
Il servizio di esportazione dati è un servizio aggiuntivo disponibile come soluzione Microsoft Dynamics 365 (online) che aggiunge la funzionalità di replica dei dati di Dynamics 365 (online) in un archivio di database SQL di Microsoft Azure in una sottoscrizione Microsoft Azure di proprietà del cliente. Le destinazioni supportate sono database SQL di Microsoft Azure e Microsoft Azure SQL Server su macchine virtuali di Microsoft Azure. Il servizio sincronizza intelligentemente l'intero schema e i dati di Dynamics 365 inizialmente e quindi sincronizza in modo continuo mentre si verificano le modifiche (modifiche delta) nel sistema Microsoft Dynamics 365 (online).
Il servizio di esportazione dati fornisce un'interfaccia per la gestire la configurazione e per l'amministrazione corrente del servizio dall'interno di Dynamics 365 (online). Per ulteriori informazioni, vedere la pagina TechNet relativa all'esportazione dati. In questo argomento vengono illustrati l'interfaccia programmatica corrispondente e i problemi di questo servizio.
Prerequisiti per utilizzare il servizio di esportazione dati
Poiché questo servizio richiede l'accesso a un database SQL di Microsoft Azure esterno da Dynamics 365 (online), una serie di prerequisiti devono essere soddisfatti prima di poter accedere in modo corretto a questo servizio. I seguenti prerequisiti sono illustrati più dettagliatamente da un punto di vista amministrativo nella sezione di TechNet relativa ai prerequisiti del servizio di esportazione dati.
Il servizio Dynamics 365 (online) deve essere configurato in modo che:
Devi disporre di Aggiornamento di dicembre 2016 per Microsoft Dynamics 365 (online) o un'istanza successiva con i dati originali o una copia completa. Per ulteriori informazioni, vedere Copiare un'istanza.
Le entità che verranno esportate sono abilitate con il rilevamento delle modifiche. Per ulteriori informazioni, vedere Utilizzare il rilevamento delle modifiche per sincronizzare i dati con sistemi esterni.
Il codice viene eseguito nel contesto di un utente con il ruolo di sicurezza di amministratore di sistema.
Nota
Si noti che l'accesso programmatico a questo servizio non richiede l'installazione della soluzione gestita associata di esportazione di dati.
Il database SQL di Azure di destinazione deve essere configurato in modo che:
La sottoscrizione deve supportare il volume di dati replicato dall'istanza di Dynamics 365.
Le impostazioni del firewall devono consentire l'accesso dall'indirizzo IP del servizio di esportazione dati. Per ulteriori informazioni, vedere Configurare una regola firewall a livello di server per il database SQL di Azure tramite il portale di Azure.
È consigliabile che l'opzione "Consenti l'accesso a Servizi di Azure" sia abilitata.
L'utente del database, specificato nella stringa di connessione di esportazione dati, deve disporre degli appropriati privilegi di creazione e modifica per il database di destinazione. Privilegi minimi: CRTB, CRTY, CRVW, CRPR e ALUS. Per ulteriori informazioni, vedere Autorizzazioni (Motore di database).
Almeno un utente dispone di autorizzazioni estese sullo schema. Lo script seguente crea un nuovo utente con queste caratteristiche.
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
Per le soluzioni e servizi online, Azure fornisce un servizio Insieme di credenziali delle chiavi per proteggere chiavi crittografiche, password e altri dati riservati. Per utilizzare l'Insieme di credenziali delle chiavi di Azure, questo servizio di proprietà del cliente deve essere configurato in modo da assegnare l'autorizzazione a "Servizio di esportazione dati di Dynamics 365", che viene utilizzato per archiviare in modo sicuro la stringa di connessione SQL di Azure. Per eseguire questa configurazione con uno script PowerShell, vedi TechNet: Come configurare l'insieme di credenziali delle chiavi di Azure. In alternativa questo servizio può essere gestito tramite la sua API REST; vedere la pagina relativa alla gestione dell'Insieme di credenziali delle chiavi.
Si consiglia anche di aggiungere il dominio https://discovery.crmreplication.azure.net/ all'elenco di siti attendibili nel browser e abilitare i popup per questo sito.
Programmazione per il servizio di esportazione dati
Il servizio di esportazione dati espone un'API basata su REST che è suddivisa in due gruppi: un set di operazioni Metadata per esplorare la struttura organizzativa, le relazioni e le informazioni di connessione relative a Dynamics 365 e un set di operazioni Profiles per la configurazione e la gestione di ogni replica di dati. Quest'API è completamente definita e documentata nei seguenti URL Swagger:
Endpoint Swagger |
Descrizione |
---|---|
https://discovery.crmreplication.azure.net/swagger/docs/2016-01-01 |
Definizione JSON dell'API del servizio di esportazione dati da utilizzare negli strumenti di sviluppo e nei processi dinamici |
https://discovery.crmreplication.azure.net/swagger/ui/index# |
La versione intuitiva di quest'API per riferimento per sviluppatori |
Riferimento rapido dell'API
Per la comodità del lettore queste interfacce vengono riepilogate nelle tabelle seguenti.
Operazioni Metadata (https://discovery.crmreplication.azure.net/crm/exporter/metadata/)
Risorsa |
Metodi |
Descrizione |
---|---|---|
Organizzazioni |
Ottenere i dettagli dell'organizzazione per tutte le organizzazioni a cui l'utente corrente appartiene |
|
discover |
Ottenere i dettagli dell'organizzazione per l'organizzazione specificata |
|
connettore |
Ottenere i dettagli del connettore per l'organizzazione specificata |
|
Entità |
Ottenere tutte le entità pubbliche esportabili per l'organizzazione specificata |
|
relazioni |
Ottenere tutte le relazioni pubbliche esportabili per l'organizzazione specificata |
|
hasorgacceptedprivacyterms |
Verificare se l'organizzazione associata ha accettato le condizioni di privacy |
|
acceptprivacyterms |
Accettare l'organizzazione specificata per l'accesso ai dati |
Operazioni Profiles ([Organization-URI]/crm/exporter/)
Risorsa |
Metodi |
Descrizione |
---|---|---|
profiles |
Ottenere tutti i profili per l'organizzazione specificata, creare un nuovo profilo di esportazione |
|
profiles/{id} |
Ottenere, aggiornare o eliminare un profilo specifico |
|
profiles/{id}/activate |
Attivare un profilo, che avvia la replica dei metadati e dati associati |
|
profiles/{id}/activatemetadata |
Attivare il profilo solo per la replica dei metadati |
|
profiles/{id}/activatedata |
Attivare il profilo solo per la replica dei dati |
|
profiles/{id}/deactivate |
Disattivare un profilo |
|
profiles/{id}/test |
Eseguire operazioni di verifica su un profilo esistente |
|
profiles/validate |
Eseguire operazioni di verifica su una descrizione del profilo prima di crearlo |
|
profiles/{id}/failures |
Ottenere la stringa di connessione a un BLOB che contiene dettagli di errore per un dato profilo |
Accedere
Poiché solo gli amministratori di sistema di Dynamics 365 sono autorizzati a eseguire le operazioni di esportazione dati, queste API applicano l'autorizzazione del chiamante mediante l'utilizzo di token di sicurezza di Azure Active Directory (ADD). Il seguente frammento di codice illustra la generazione di tale token per un'applicazione Web utilizzando il nome e la password di amministratore. È necessario sostituire AppId, crmAdminUser e crmAdminPassword con i valori appropriati al servizio. Questo approccio può essere utilizzato per sviluppo e test, ma mezzi più sicuri devono essere utilizzati per la produzione, ad esempio l'uso di Insieme di credenziali delle chiavi di 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;
Per istruzioni su come ottenere un AppId vedere Autorizzare l'accesso ad applicazioni Web con OAuth 2.0 e Azure Active Directory. Per ulteriori informazioni sulla sicurezza degli utenti di Azure, vedere Scenari di autenticazione per Azure AD.
Errore di gestione ed elaborazione in caso di errore
Una volta che un profilo è stato configurato correttamente, il processo di sincronizzazione è in genere altamente affidabile. Tuttavia, se un record non viene sincronizzato, viene applicata la seguente elaborazione in caso di errore:
Dopo aver configurato l'intervallo dei tentativi, viene effettuato un altro tentativo per sincronizzare il record. Questa operazione viene ripetuta per il numero massimo di nuovi tentativi configurato.
Il record è contrassegnato come elaborato.
Una voce di record non riuscito corrispondente viene scritta nel registro errori.
Il record seguente viene elaborato.
Poiché il record è contrassegnato come elaborato, non verranno eseguiti tentativi futuri di sincronizzare il record finché non cambia il valore o lo schema. Nota che anche scrivendo nuovamente valori identici in un'istanza di entità il record viene contrassegnato come modificato.
Le voci del registro errori sono di sola scrittura. I completamenti o gli errori rilevati in futuro durante la sincronizzazione dello stesso record, non comportano l'alterazione delle voci passate del record. Ad esempio, una voce di errore rimarrà nel registro errori anche dopo che il record è stato sincronizzato correttamente in un ciclo successivo di sincronizzazione.
Attenzione
Questa logica di elaborazione degli errori è soggetta a modifiche nelle versioni future del servizio.
Tali voci di errore possono essere recuperate con la richiesta Ottieni dettagli sull'errore per un profilo specificato. La risposta restituisce un URI di un BLOB di Azure contenente le informazioni sull'errore. Ogni riga contiene i seguenti campi delimitati da virgole (le nuove righe aggiunte per chiarezza):
Entity: <entity-name>,
RecordId: <”N/A” | guid>,
NotificationTime: <datetime>,
ChangeType: <sync-type>,
FailureReason: <description>
Ad esempio:
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'.
Vedere anche
Gestire i dati in Microsoft Dynamics 365
Importa dati
Microsoft Dynamics 365
© 2017 Microsoft. Tutti i diritti sono riservati. Copyright