Condividi tramite


Errore per i pacchetti SSIS nei server SQL configurati per l'uso della crittografia e delle dimensioni dei pacchetti di rete

Questo articolo consente di risolvere il problema che si verifica quando si configura la SQL Server per l'uso di connessioni crittografate e l'opzione delle dimensioni dei pacchetti di rete.

Versione originale del prodotto: SQL Server
Numero KB originale: 2006769

Sintomi

Si consideri lo scenario seguente per gli ambienti SQL Server:

In questo scenario si noterà quanto segue:

  • Un tentativo di salvare i pacchetti SSIS nell'archivio pacchetti MSDB avrà esito negativo con il messaggio di errore seguente:

    Il metodo SaveToSQLServer ha rilevato il codice di errore OLE DB 0x80004005 (errore di collegamento di comunicazione). L'istruzione SQL rilasciata non è riuscita.

    Nota

    Si verifica anche il messaggio di errore precedente quando si salvano i piani di manutenzione creati in SQL Server Management Studio come pacchetti SSIS nei database MSDB, poiché tale operazione usa intrinsecamente la crittografia per le connessioni da SQL Server.

  • La funzionalità dell'agente di raccolta dati in SQL Server che usa SSIS presenta vari problemi, come indicato di seguito:

    • Un processo set di raccolta dati segnala gli errori seguenti nella cronologia processi:

    dcexec: Errore: Errore interno in Main (Motivo: Il sistema non riesce a trovare il file specificato).
    dcexec: Errore: errore interno in Main (motivo: l'handle non è valido).

    • Quando si esegue un set di raccolta dati direttamente dai dati, è possibile che venga visualizzato il messaggio di errore seguente:

    Pacchetto "Set_{7B191952-8ECF-4E12-AEB2-EF646EF79FEF}_Master_Package_Collection" non riuscito.

Se si esaminano i log dell'agente di raccolta dati, viene visualizzato un messaggio di errore simile al seguente:

Errore SSIS. Nome componente: TaskForCollectionItem_1, Codice: -1073602332, Sottocomponente: (null), Descrizione: Errore 0xC0014062 durante la preparazione al caricamento del pacchetto. Il metodo LoadFromSQLServer ha rilevato il codice di errore OLE DB 0x80004005 (errore di collegamento di comunicazione). L'istruzione SQL rilasciata non è riuscita.

Il problema può verificarsi con qualsiasi operazione che usa il metodo Application.LoadFromSqlServer(String, String, String, String, IDTSEvents) o Application.SaveToSqlServer(Package, IDTSEvents, String, String, String) quando entrambe le condizioni (crittografia e dimensioni di pacchetti di grandi dimensioni) descritte in questa sezione sono vere.

Causa

Secure Socket Layer (SSL) e la relativa sostituzione, Transport Layer Security (TLS), limitano i frammenti di dati a 16.000 (16384) di dimensioni. Questo è documentato nella RFC 2246 pubblica (sezione 6.2.2) e l'implementazione corrente dei protocolli di rete e del livello endpoint TDS rispetta questa specifica. Pertanto, quando si usano dimensioni di pacchetto di rete superiori a 16k negli ambienti in cui la crittografia è abilitata in SQL Server, si verificano errori descritti nella sezione Sintomi.

Risoluzione

Per risolvere questo problema, specificare una dimensione del pacchetto di rete inferiore o uguale a 16.384 byte. È possibile usare il codice seguente per impostare l'opzione network packet size di configurazione della sp_configure stored procedure di sistema:

Nota

Se MARS è abilitato, il provider SMUX aggiungerà un'intestazione di 16 byte al pacchetto prima della crittografia SSL, riducendo le dimensioni massime del pacchetto di rete a 16368 byte.

EXEC sp_configure 'network packet size', 16368
RECONFIGURE WITH OVERRIDE
GO

Le dimensioni del pacchetto di rete possono essere modificate anche tramite la pagina Proprietà server in Esplora oggetti. Selezionare l'opzione Avanzate e digitare il nuovo valore per Dimensioni pacchetto di rete e fare clic su OK.

Nota

Non è necessario riavviare SQL Server per rendere effettiva la modifica. Dopo aver modificato questa impostazione, tutte le nuove connessioni ricevono il nuovo valore.

Ulteriori informazioni

TLS e SSL

Passaggi da riprodurre

sp_configure 'network packet size', 16384
RECONFIGURE WITH OVERRIDE
GO
  1. Assicurarsi che l'agente di raccolta dati sia installato.

  2. Impostare Network Packet Size su un valore maggiore di 16K.

  3. Fare clic con il pulsante destro del mouse su Raccolta dati in Esplora oggetti (OE) e disabilitare la raccolta dati.

  4. Fare clic con il pulsante destro del mouse su Raccolta dati in OE e selezionare Abilita raccolta dati.

  5. Fare clic con il pulsante destro del mouse su Attività server nei set di raccolta e selezionare Avvia set di raccolta dati.

  6. Per ottenere l'errore, fare clic con il pulsante destro del mouse su Attività server e selezionare Raccogli e carica ora. I log del controller di dominio mostrano l'errore in dettaglio.