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.