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:
È possibile configurare il SQL Server per l'uso di Abilita connessioni crittografate al motore di database per le connessioni.
È possibile configurare SQL Server per l'uso di un'opzione per le dimensioni dei pacchetti di rete maggiore del valore predefinito (4K).
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
Passaggi da riprodurre
sp_configure 'network packet size', 16384
RECONFIGURE WITH OVERRIDE
GO
Assicurarsi che l'agente di raccolta dati sia installato.
Impostare Network Packet Size su un valore maggiore di 16K.
Fare clic con il pulsante destro del mouse su Raccolta dati in Esplora oggetti (OE) e disabilitare la raccolta dati.
Fare clic con il pulsante destro del mouse su Raccolta dati in OE e selezionare Abilita raccolta dati.
Fare clic con il pulsante destro del mouse su Attività server nei set di raccolta e selezionare Avvia set di raccolta dati.
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.