L'esecuzione di un pacchetto SSIS smette di rispondere quando si abilitano le transazioni DTC per un pacchetto in Microsoft SQL Server
Questo articolo consente di risolvere il problema in cui l'esecuzione di un pacchetto di Microsoft SQL Server Integration Services (SSIS) smette di rispondere se si abilitano le transazioni DTC per il pacchetto e si abilita la ValidateExternalMetadata
proprietà per un componente in un'attività flusso di dati.
Versione originale del prodotto: SQL Server
Numero KB originale: 2253391
Sintomi
Considerare lo scenario descritto di seguito:
- Creare un pacchetto SSIS in SQL Server.
- Il pacchetto SSIS contiene un'attività del flusso di dati e alcune altre attività.
- La
TransactionOption
proprietà del pacchetto SSIS è impostata su Obbligatorio per usare le transazioni DTC. - Le altre attività vengono eseguite in una transazione DTC prima dell'esecuzione dell'attività del flusso di dati.
- Si aggiunge un componente all'attività flusso di dati.
- La
ValidateExternalMetadata
proprietà di un componente del flusso di dati è impostata su True. - L'attività flusso di dati contiene un componente di destinazione OLE DB con la modalità di accesso ai dati impostata su Tabella o visualizzazione oppure su Nome tabella o variabile del nome della vista.
Quando si esegue il pacchetto in questo scenario, l'esecuzione smette di rispondere. Inoltre, se si esegue il debug del pacchetto SSIS in Visual Studio, nella visualizzazione Stato vengono visualizzati messaggi simili ai seguenti:
Avvio del pacchetto SSIS "Package.dtsx".
Informazioni: 0x4004300A in Flusso di dati Task, DTS. Pipeline: la fase di convalida inizia. Informazioni: 0x4001100A in Pacchetto: Avvio della transazione distribuita per questo contenitore. Informazioni: 0x4004300A in Flusso di dati Task, DTS. Pipeline: la fase di convalida inizia.
Causa
Questo problema si verifica perché la connessione nel flusso di dati non è registrata nella transazione DTC. In questo modo l'esecuzione della sp_cursoropen
stored procedure viene bloccata. Si tratta di una funzionalità di progettazione perché non è possibile registrare una connessione in una transazione DTC durante il processo di convalida. Nello scenario descritto nella sezione Sintomi , il processo di convalida di un componente del flusso di dati viene bloccato quando si esegue il pacchetto perché la connessione nell'attività flusso di dati non è stata registrata nella transazione DTC.
Risoluzione
Per risolvere il problema, utilizzare uno dei metodi riportati di seguito:
Impostare
ValidateExternalMetadata
su False per tutti i componenti dell'attività flusso di dati.Impostare la modalità di accesso ai dati del componente destinazione OLE DB su una delle modalità seguenti:
- Tabella o visualizzazione - Caricamento rapido
- Variabile nome tabella o nome vista - Caricamento rapido
- Comando SQL
Ulteriori informazioni
La modalità di accesso ai dati Table o View è bloccata, ma le altre modalità di accesso ai dati non vengono bloccate perché i diversi comandi emessi dal provider di dati per ogni modalità di accesso ai dati. Per ottenere altri dettagli su questo problema, usare SQL Server Profiler per visualizzare i diversi comandi emessi dal provider di dati.
Per altre informazioni su come usare SQL Server Profiler, vedere SQL Server Profiler Modelli e autorizzazioni.
Per altre informazioni su come risolvere i problemi relativi ai pacchetti SSIS, vedere Risoluzione dei problemi relativi allo sviluppo di pacchetti.
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per