Errore per i pacchetti SSIS nei server SQL configurati per l'uso della crittografia e delle dimensioni dei pacchetti di rete
Questo articolo illustra come risolvere il problema che si verifica quando si configura 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 DI SQL Server:
Configurare SQL Server per l'uso di Abilita connessioni crittografate al motore di database per le connessioni.
Configurare il server SQL per l'uso di un'opzione di dimensioni del pacchetto 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.
Note
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 perché tale operazione usa intrinsecamente la crittografia per le connessioni a SQL Server.
La funzionalità dell'agente di raccolta dati in SQL Server che usa SSIS si verifica in diversi problemi, come indicato di seguito:
- Un processo set di raccolta dati segnala gli errori seguenti nella cronologia processi:
dcexec: Errore interno in Main (Motivo: Impossibile trovare il file specificato).
dcexec: Errore interno in Main (motivo: handle non valido).- Quando si esegue un set di raccolta dati direttamente dai dati, è possibile che venga visualizzato il messaggio di errore seguente:
Impossibile creare il pacchetto "Set_{7B191952-8ECF-4E12-AEB2-EF646EF79FEF}_Master_Package_Collection".
Se si esaminano i log dell'agente di raccolta dati, verrà 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). Impossibile eseguire l'istruzione SQL inoltrata.
Il problema può verificarsi con qualsiasi operazione che usa metodi Application.LoadFromSqlServer(String, String, String, String, String, IDTSEvents) o Application.SaveToSqlServer(Package, IDTSEvents, String, String) method 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) dimensioni. Questo documento è documentato nel livello pubblico RFC 2246 (sezione 6.2.2) e l'implementazione corrente dei protocolli di rete e dei livelli endpoint TDS è conforme a questa specifica. Pertanto, quando si usa una dimensione di pacchetto di rete maggiore di 16.000 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 minore 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:
Note
Se MARS è abilitato, il provider SMUX aggiungerà un'intestazione a 16 byte al pacchetto prima della crittografia SSL, riducendo le dimensioni massime dei pacchetti di rete a 16368 byte.
EXEC sp_configure 'network packet size', 16368
RECONFIGURE WITH OVERRIDE
GO
Le dimensioni dei pacchetti 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.
Note
Non è necessario riavviare SQL Server per rendere effettiva la modifica. Dopo la modifica di questa impostazione, tutte le nuove connessioni ricevono il nuovo valore.
Ulteriori informazioni
Passaggi per riprodurre il bug
sp_configure 'network packet size', 16384
RECONFIGURE WITH OVERRIDE
GO
Assicurarsi che l'agente di raccolta dati sia installato.
Impostare Dimensioni pacchetto di rete su un valore maggiore di 16.000.
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 adesso. I log del controller di dominio mostrano l'errore in dettaglio.