Risolvere i problemi relativi a Azure Synapse Analytics, Azure SQL Database, SQL Server, Azure SQL Managed Instance e Amazon RDS per i connettori SQL Server in Azure Data Factory e Azure Synapse

APPLICABILE A: Azure Data Factory Azure Synapse Analytics

Suggerimento

Data Factory in Microsoft Fabric è la nuova generazione di Azure Data Factory, con un'architettura più semplice, un'intelligenza artificiale predefinita e nuove funzionalità. Se non si ha familiarità con l'integrazione dei dati, iniziare con Fabric Data Factory. I carichi di lavoro di Azure Data Factory esistenti possono eseguire l'aggiornamento a Fabric per accedere a nuove funzionalità tra data science, analisi in tempo reale e creazione di report.

Questo articolo fornisce suggerimenti per risolvere i problemi comuni relativi a Azure Synapse Analytics, Azure SQL Database, SQL Server, Azure SQL Managed Instance e Amazon RDS per i connettori di SQL Server in Azure Data Factory e Azure Synapse.

Codice errore: SqlFailedToConnect

  • Messaggio: Cannot connect to SQL Database: '%server;', Database: '%database;', User: '%user;'. Check the linked service configuration is correct, and make sure the SQL Database firewall allows the integration runtime to access.

  • Cause e raccomandazioni: cause diverse possono causare questo errore. Controllare l'elenco seguente per individuare le possibili cause di analisi e raccomandazioni correlate.

    Analisi delle cause Raccomandazione
    Per Azure SQL, se il messaggio di errore contiene la stringa "SqlErrorNumber=47073", significa che l'accesso alla rete pubblica viene negato nell'impostazione di connettività. Nel firewall Azure SQL impostare l'opzione di accesso alla rete pubblica Deny su No. Per altre informazioni, vedere Azure SQL impostazioni di connettività.
    Per Azure SQL, se il messaggio di errore contiene un codice di errore SQL, ad esempio "SqlErrorNumber=[errorcode]", vedere la guida alla risoluzione dei problemi Azure SQL. Per una raccomandazione, vedere Risolvere i problemi di connettività e altri errori con Azure SQL Database e Azure SQL Managed Instance.
    Verificare se la porta 1433 si trova nell'elenco degli elementi consentiti del firewall. Per altre informazioni, vedere Porte usate da SQL Server.
    Se il messaggio di errore contiene la stringa "SqlException", database SQL l'errore indica che alcune operazioni specifiche non sono riuscite. Per ulteriori informazioni, cercare in base al codice di errore SQL tra gli errori del motore di database. Per altre informazioni, contattare Azure SQL supporto tecnico.
    Se si tratta di un problema temporaneo, come ad esempio una connessione di rete instabile, aggiungere un nuovo tentativo nella politica di attività per attenuare il problema. Per altre informazioni, vedere Pipeline e attività.
    Se il messaggio di errore contiene la stringa "Client con indirizzo IP '... ' non è autorizzato ad accedere al server" e si sta tentando di connettersi a Azure SQL Database, l'errore è in genere causato da un problema del firewall Azure SQL Database. Nella configurazione del firewall di Azure SQL Server, abilitare l'opzione Consenti ai servizi e alle risorse di Azure di accedere a questo server. Per altre informazioni, vedere Azure SQL Database e Azure Synapse regole del firewall IP.
    Se il messaggio di errore contiene Login failed for user '<token-identified principal>', questo errore è in genere causato dalla mancata concessione di autorizzazioni sufficienti al principale del servizio, all'identità gestita assegnata dal sistema o all'identità gestita assegnata dall'utente (dipende dall'autenticazione scelta) nel database. Concedere autorizzazioni sufficienti all'entità servizio o all'identità gestita assegnata dal sistema o all'identità gestita assegnata dall'utente nel database.

    Per database SQL di Azure:
        - Se si usa l'autenticazione principale del servizio, seguire autenticazione principale del servizio.
        - Se si usa l'autenticazione con identità gestite assegnata dal sistema, seguire Sistema di autenticazione per le identità gestite assegnate dal sistema.
        - Se utilizzi l'autenticazione dell'identità gestita assegnata dall'utente, segui l'autenticazione dell'identità gestita assegnata dall'utente.
       
    For Azure Synapse Analytics:
        - Se si usa l'autenticazione principale del servizio, seguire autenticazione principale del servizio.
        - Se usi l'autenticazione tramite l'identità gestita assegnata dal sistema, segui Identità gestite assegnate dal sistema per l'autenticazione delle risorse Azure.
        - Se utilizzi l'autenticazione dell'identità gestita assegnata dall'utente, segui l'autenticazione dell'identità gestita assegnata dall'utente.
       
    For Azure SQL Managed Instance:
        - Se si usa l'autenticazione principale del servizio, seguire autenticazione principale del servizio.
       - Se si usa l'autenticazione con identità gestite assegnata dal sistema, seguire Sistema di autenticazione per le identità gestite assegnate dal sistema.
       - Se utilizzi l'autenticazione dell'identità gestita assegnata dall'utente, segui l'autenticazione dell'identità gestita assegnata dall'utente.
    Se viene visualizzato il messaggio di errore che contiene The server was not found or was not accessible quando si usa Azure SQL Managed Instance, questo errore viene in genere causato dall'mancata abilitazione dell'endpoint pubblico Azure SQL Managed Instance. Fare riferimento a Configurare l'endpoint pubblico in Azure SQL Managed Instance per abilitare l'endpoint pubblico Azure SQL Managed Instance.

Codice errore: SqlOperationFailed

  • Messaggio: A database operation failed. Please search error to get more details.

  • Cause e raccomandazioni: cause diverse possono causare questo errore. Controllare l'elenco seguente per individuare le possibili cause di analisi e raccomandazioni correlate.

    Analisi delle cause Raccomandazione
    Se il messaggio di errore contiene la stringa "SqlException", database SQL genera un errore che indica che un'operazione specifica non è riuscita. Se l'errore SQL non è chiaro, provare a modificare il database con il livello di compatibilità "150" più recente. Può generare gli errori SQL della versione più recenti. Per altre informazioni, vedere la documentazione.
    Per altre informazioni sulla risoluzione dei problemi di SQL, cercare il codice di errore SQL negli errori del motore di database. Per altre informazioni, contattare Azure SQL supporto tecnico.
    Se il messaggio di errore contiene la stringa "PdwManagedToNativeInteropException", in genere è causato da una mancata corrispondenza tra le dimensioni della colonna di origine e sink. Controllare le dimensioni delle colonne di origine e sink. Per altre informazioni, contattare Azure SQL supporto tecnico.
    Se il messaggio di errore contiene la stringa "InvalidOperationException", in genere è causato da dati di input non validi. Per identificare la riga in cui si è verificato il problema, abilitare la funzionalità di tolleranza di errore nell'attività di copia, che può reindirizzare righe problematiche all'archiviazione per ulteriori indagini. Per altre informazioni, vedere Tolleranza di errore dell'attività di copia.
    Se il messaggio di errore contiene "Timeout di esecuzione scaduto", in genere è causato dal timeout della query. Configurare il timeout della query nell'origine e il timeout del batch di scrittura nel sink per aumentare il timeout.
    Se il messaggio di errore contiene Cannot find the object "dbo.Contoso" because it does not exist or you do not have permissions. quando si copiano dati da un ambiente ibrido in una tabella SQL Server locale, è causato dal fatto che l'account SQL corrente non dispone di autorizzazioni sufficienti per eseguire le richieste rilasciate da .NET SqlBulkCopy.WriteToServer oppure la tabella o il database non esistono. Passare a un account SQL con privilegi più elevati o verificare se la tabella o il database esiste.

Codice errore: SqlUnauthorizedAccess

  • Messaggio: Cannot connect to '%connectorName;'. Detail Message: '%message;'

  • Causa: le credenziali non sono corrette o l'account di accesso non può accedere al database SQL.

  • Raccomandazione: verificare che l'account di accesso disponga di autorizzazioni sufficienti per accedere al database SQL.

Codice errore: SqlOpenConnectionTimeout

  • Messaggio: Open connection to database timeout after '%timeoutValue;' seconds.

  • Causa: il problema potrebbe essere un errore temporaneo del database SQL.

  • Recommendation: ripetere l'operazione per aggiornare l'connection string del servizio collegato con un valore di timeout di connessione maggiore.

Codice errore: SqlAutoCreateTableTypeMapFailed

  • Messaggio: Type '%dataType;' in source side cannot be mapped to a type that supported by sink side(column name:'%columnName;') in autocreate table.

  • Causa: la tabella di creazione automatica non può soddisfare il requisito di origine.

  • Raccomandazione: aggiornare il tipo di colonna nei mapping o creare manualmente la tabella sink nel server di destinazione.

Codice errore: SqlDataTypeNotSupported

  • Messaggio: A database operation failed. Check the SQL errors.

  • Causa: Se il problema si verifica nell'origine SQL e l'errore è correlato all'overflow SqlDateTime, il valore supera l'intervallo di tipi logici (01/01/1753 00:00:00 - 31/12/9999 23:59:59).

  • Raccomandazione: convertire il tipo in una stringa nella query SQL di origine oppure, nel mapping delle colonne dell'attività di copia, cambiare il tipo di colonna in String.

  • Causa: se il problema si verifica nel sink SQL e l'errore è correlato all'overflow sqlDateTime, il valore dei dati supera l'intervallo consentito nella tabella sink.

  • Raccomandazione: aggiornare il tipo di colonna corrispondente al tipo datetime2 nella tabella sink.

Codice errore: SqlInvalidDbStoredProcedure

  • Messaggio: The specified Stored Procedure is not valid. It could be caused by that the stored procedure doesn't return any data. Invalid Stored Procedure script: '%scriptName;'.

  • Cause e raccomandazioni: cause diverse possono causare questo errore. Controllare l'elenco seguente per individuare le possibili cause di analisi e raccomandazioni correlate.

    Analisi delle cause Raccomandazione
    La stored procedure specificata non è valida. Convalidare la procedura memorizzata usando SQL Tools. Assicurati che la procedura memorizzata possa restituire dati.
    L'attività Lookup richiede che la stored procedure restituisca un valore, ma il codice della stored procedure non restituisce alcun valore. Utilizzare l'attività della procedura memorizzata se si prevede che la procedura memorizzata non fornisca dati.

Codice errore: SqlInvalidDbQueryString

  • Messaggio: The specified SQL Query is not valid. It could be caused by that the query doesn't return any data. Invalid query: '%query;'

  • Causa: la query SQL specificata non è valida. La causa potrebbe essere che la query non restituisce dati.

  • Raccomandazione: convalidare la query SQL usando SQL Tools. Assicurarsi che la query possa restituire dati.

Codice errore: SqlInvalidColumnName

  • Messaggio: Column '%column;' does not exist in the table '%tableName;', ServerName: '%serverName;', DatabaseName: '%dbName;'.

  • Causa: impossibile trovare la colonna perché la configurazione potrebbe non essere corretta.

  • Raccomandazione: Verificare la colonna nella query, la struttura nel dataset e le mappature nell'attività.

Codice errore: SqlBatchWriteTimeout

  • Messaggio: Timeouts in SQL write operation.

  • Causa: il problema potrebbe essere causato da un errore temporaneo del database SQL.

  • Raccomandazione: ripetere l'operazione. Se il problema persiste, contattare Azure SQL supporto tecnico.

Codice errore: SqlBatchWriteTransactionFailed

  • Messaggio: SQL transaction commits failed.

  • Causa: se i dettagli dell'eccezione indicano costantemente un timeout della transazione, la latenza di rete tra il runtime di integrazione e il database è maggiore della soglia predefinita di 30 secondi.

  • Raccomandazione: aggiornare la stringa di connessione del servizio collegato SQL con un valore di timeout di connessione uguale o maggiore a 120 e rieseguire l'attività.

  • Causa: se i dettagli dell'eccezione indicano in modo intermittente che la connessione SQL è interrotta, potrebbe trattarsi di un errore di rete temporaneo o di un problema lato database SQL.

  • Raccomandazione: ripetere l'attività ed esaminare le metriche lato database SQL.

Codice errore: SqlBulkCopyInvalidColumnLength

  • Messaggio: SQL Bulk Copy failed due to receive an invalid column length from the bcp client.

  • Causa: Copia bulk SQL non riuscita perché ha ricevuto una lunghezza di colonna non valida dal client dell'utilità di copia bulk (bcp).

  • Raccomandazione: per identificare la riga in cui si è verificato il problema, abilitare la funzionalità di tolleranza di errore nell'attività di copia. In questo modo è possibile reindirizzare le righe problematiche all'archiviazione per ulteriori indagini. Per altre informazioni, vedere Tolleranza di errore dell'attività di copia.

Codice errore: SqlConnectionIsClosed

  • Messaggio: The connection is closed by SQL Database.

  • Causa: la connessione SQL viene chiusa dal database SQL quando c'è un elevato numero di esecuzioni simultanee e quando il server termina la connessione.

  • Raccomandazione: ripetere la connessione. Se il problema persiste, contattare Azure SQL supporto tecnico.

Codice errore: SqlServerInvalidLinkedServiceCredentialMissing (Credenziale del servizio collegato mancante)

  • Messaggio: The SQL Server linked service is invalid with its credential being missing.

  • Causa: il servizio collegato non è stato configurato correttamente.

  • Raccomandazione: convalidare e correggere il servizio collegato di SQL Server.

Codice errore: SqlParallelFailedToDetectPartitionColumn

  • Messaggio: Failed to detect the partition column with command '%command;', %message;.

  • Causa: nella tabella non è presente alcuna chiave primaria o chiave univoca.

  • Raccomandazione: controllare la tabella per assicurarsi che venga creata una chiave primaria o un indice univoco.

Codice errore: SqlParallelFailedToDetectPhysicalPartitions

  • Messaggio: Failed to detect the physical partitions with command '%command;', %message;.

  • Causa: non vengono create partizioni fisiche per la tabella. Controlli il database.

  • Raccomandazione: fare riferimento a Creare tabelle e indici partizionati per risolvere questo problema.

Codice errore: SqlParallelFailedToGetPartitionRangeSynapse

  • Messaggio: Failed to get the partitions for azure synapse with command '%command;', %message;.

  • Causa: non vengono create partizioni fisiche per la tabella. Controlli il database.

  • Raccomandazione: fare riferimento alle tabelle di partizionamento nel pool SQL dedicato per risolvere questo problema.

Messaggio di errore: Conversione non riuscita durante la conversione da una stringa di caratteri a uniqueidentifier

  • Symptoms: quando si copiano dati da un'origine dati tabulare (ad esempio SQL Server) in Azure Synapse Analytics usando copia di staging e PolyBase, viene visualizzato l'errore seguente:

    ErrorCode=FailedDbOperation,Type=Microsoft.DataTransfer.Common.Shared.HybridDeliveryException, Message=Error happened when loading data into Azure Synapse Analytics., Source=Microsoft.DataTransfer.ClientLibrary,Type=System.Data.SqlClient.SqlException, Message=Conversion failed when converting from a character string to uniqueidentifier...

  • Cause: Azure Synapse Analytics PolyBase non può convertire una stringa vuota in un GUID.

  • Soluzione: Nel sink dell'attività di copia, in Impostazioni Polybase, impostare l'opzione use type default su false.

Messaggio di errore: Tipo di dati previsto: DECIMAL(x,x), Valore non valido

  • Symptoms: quando si copiano dati da un'origine dati tabulare (ad esempio SQL Server) in Azure Synapse Analytics usando copia a fasi e PolyBase, viene visualizzato l'errore seguente:

    ErrorCode=FailedDbOperation,Type=Microsoft.DataTransfer.Common.Shared.HybridDeliveryException, Message=Error happened when loading data into Azure Synapse Analytics., Source=Microsoft.DataTransfer.ClientLibrary,Type=System.Data.SqlClient.SqlException, Message=Query aborted-- the maximum reject threshold (0 rows) was reached while reading from an external source: 1 rows rejected out of total 415 rows processed. (/file_name.txt) Column ordinal: 18, Expected data type: DECIMAL(x,x), Offending value:..

  • Cause: Azure Synapse Analytics PolyBase non può inserire una stringa vuota (valore Null) in una colonna decimale.

  • Soluzione: nel sink dell'attività di copia, in Impostazioni Polybase, impostare l'opzione use type default su false.

Messaggio di errore: messaggio di eccezione Java: HdfsBridge::CreateRecordReader

  • Symptoms: si copiano i dati in Azure Synapse Analytics usando PolyBase e viene visualizzato l'errore seguente:

    Message=110802;An internal DMS error occurred that caused this operation to fail. Details: Exception: Microsoft.SqlServer.DataWarehouse.DataMovement.Common.ExternalAccess.HdfsAccessException, Message: Java exception raised on call to HdfsBridge_CreateRecordReader. Java exception message:HdfsBridge::CreateRecordReader - Unexpected error encountered creating the record reader.: Error [HdfsBridge::CreateRecordReader - Unexpected error encountered creating the record reader.] occurred while accessing external file.....

  • Causa: la causa potrebbe essere che lo schema (larghezza totale colonna) è troppo grande (maggiore di 1 MB). Controllare lo schema della tabella di Azure Synapse Analytics di destinazione aggiungendo le dimensioni di tutte le colonne:

    • Int = 4 byte
    • Bigint = 8 byte
    • Varchar(n), char(n), binary(n), varbinary(n) = n byte
    • Nvarchar(n), nchar(n) = n*2 byte
    • Data = 6 byte
    • Datetime/(2), smalldatetime = 16 byte
    • Datetimeoffset = 20 byte
    • Decimal = 19 byte
    • float = 8 byte
    • Money = 8 byte
    • Smallmoney = 4 byte
    • Real = 4 byte
    • Smallint = 2 byte
    • Tempo = 12 byte
    • TinyInt = 1 byte
  • Risoluzione:

    • Ridurre la larghezza della colonna a meno di 1 MB.
    • In alternativa, usare un approccio di inserimento in blocco disabilitando PolyBase.

Messaggio di errore: la condizione specificata tramite intestazioni condizionali HTTP non viene soddisfatta

  • Symptoms: usare la query SQL per eseguire il pull dei dati da Azure Synapse Analytics e ricevere l'errore seguente:

    ...StorageException: The condition specified using HTTP conditional header(s) is not met...

  • Cause: Azure Synapse Analytics rilevato un problema durante l'esecuzione di query sulla tabella esterna in Azure Storage.

  • Resolution: eseguire la stessa query in SQL Server Management Studio (SSMS) e verificare se si ottiene lo stesso risultato. In tal caso, aprire un ticket di supporto per Azure Synapse Analytics e specificare il nome del server e del database Azure Synapse Analytics.

Il livello di prestazioni è basso e causa un errore di copia

  • Symptoms: copiare i dati in Azure SQL Database e ricevere l'errore seguente: Database operation failed. Error message from database execution : ExecuteNonQuery requires an open and available Connection. The connection's current state is closed.

  • Cause: Azure SQL Database s1 ha raggiunto i limiti di input/output (I/O).

  • Resolution: aggiornare il livello di prestazioni Azure SQL Database per risolvere il problema.

Messaggio di errore: i dati stringa o binari vengono troncati

  • Symptoms: si verifica un errore quando si copiano dati in una tabella SQL Server di Azure locale.

  • Causa: la definizione dello schema di tabella SQL ha una o più colonne con lunghezza inferiore al previsto.

  • Soluzione: per risolvere il problema, provare a eseguire le operazioni seguenti:

    1. Per risolvere i problemi con righe specifiche, applicare la tolleranza d'errore del sink SQL, specialmente redirectIncompatibleRowSettings.

      Nota

      La tolleranza di errore potrebbe richiedere tempi di esecuzione aggiuntivi, che potrebbero comportare costi più elevati.

    2. Controllare i dati reindirizzati rispetto alla lunghezza della colonna dello schema della tabella SQL per verificare quali colonne devono essere aggiornate.

    3. Aggiornare di conseguenza lo schema della tabella.

Codice errore: FailedDbOperation

  • Messaggio: User does not have permission to perform this action.

  • Recommendation: assicurarsi che l'utente configurato nel connettore Azure Synapse Analytics disponga dell'autorizzazione 'CONTROL' per il database di destinazione durante l'uso di PolyBase per caricare i dati. Per informazioni più dettagliate, vedere questo documento.

Codice errore: Msg 105208

  • Sintomi: Codice errore: Error code: Msg 105208, Level 16, State 1, Line 1 COPY statement failed with the following error when validating value of option 'FROM': '105200;COPY statement failed because the value for option 'FROM' is invalid.'
  • Cause: attualmente, l'inserimento di dati tramite il comando COPY in un account Azure Storage che usa la nuova funzionalità di partizionamento DNS genera un errore. La funzionalità di partizione DNS consente ai clienti di creare fino a 5.000 account di archiviazione per sottoscrizione.
  • Soluzioni: effettuare il provisioning di un account di archiviazione in una sottoscrizione che non usa la nuova funzionalità di partizione DNS Azure Storage (attualmente in anteprima pubblica).

Codice errore: SqlDeniedPublicAccess

  • Messaggio: Cannot connect to SQL Database: '%server;', Database: '%database;', Reason: Connection was denied since Deny Public Network Access is set to Yes. To connect to this server, 1. If you persist public network access disabled, please use Managed Virtual Network IR and create private endpoint. https://docs.microsoft.com/en-us/azure/data-factory/managed-virtual-network-private-endpoint; 2. Otherwise you can enable public network access, set "Public network access" option to "Selected networks" on Azure SQL Networking setting.

  • Causes: Azure SQL Database è impostato per negare l'accesso alla rete pubblica. È necessario usare la rete virtuale gestita e creare un endpoint privato per accedere.

  • Raccomandazione:

    1. Se si insiste sulla disabilitazione dell'accesso alla rete pubblica, usare il runtime di integrazione della rete virtuale gestita e creare un endpoint privato. Per altre informazioni, vedere Azure Data Factory rete virtuale gestita.

    2. In caso contrario, abilitare l'accesso alla rete pubblica impostando Public network access opzione per Selected networks nella pagina delle impostazioni Azure SQL Database Networking.

Per altre informazioni sulla risoluzione dei problemi, usare le risorse seguenti: