Erreur pour les packages SSIS sur les serveurs SQL configurés pour utiliser le chiffrement et la taille des paquets réseau
Cet article vous aide à résoudre le problème qui se produit lorsque vous configurez votre SQL Server pour utiliser des connexions chiffrées et l’option de taille de paquet réseau.
Version du produit d’origine : SQL Server
Numéro de la base de connaissances d’origine : 2006769
Symptômes
Envisagez le scénario suivant pour les environnements SQL Server :
Vous configurez votre SQL Server pour utiliser Activer les connexions chiffrées au moteur de base de données pour les connexions.
Vous configurez votre serveur SQL server pour utiliser une option de taille de paquet réseau supérieure à la valeur par défaut (4 Ko).
Dans ce scénario, vous remarquerez ce qui suit :
Une tentative d’enregistrement de packages SSIS dans le magasin de packages MSDB échoue avec le message d’erreur suivant :
La méthode SaveToSQLServer a rencontré le code d’erreur OLE DB 0x80004005 (Échec de la liaison de communication). L’instruction SQL qui a été émise a échoué.
Remarque
Vous rencontrez également le message d’erreur ci-dessus lors de l’enregistrement des plans de maintenance créés dans SQL Server Management Studio en tant que packages SSIS dans des bases de données MSDB, car cette opération utilise intrinsèquement le chiffrement pour les connexions à SQL Server.
La fonctionnalité de collecteur de données dans SQL Server qui utilise SSIS rencontre différents problèmes, comme indiqué ci-dessous :
- Un travail de jeu de collecte de données signale les erreurs suivantes dans l’historique des travaux :
dcexec : Erreur : Erreur interne au niveau principal (Raison : le système ne trouve pas le fichier spécifié).
dcexec : Erreur : Erreur interne au niveau principal (Raison : Le handle n’est pas valide).- Lorsque vous exécutez un jeu de collecte de données directement à partir des données, vous pouvez rencontrer le message d’erreur suivant :
Échec du package « Set_{7B191952-8ECF-4E12-AEB2-EF646EF79FEF}_Master_Package_Collection ».
Si vous passez en revue les journaux du collecteur de données, vous trouverez un message d’erreur similaire à ce qui suit :
Erreur SSIS. Nom du composant : TaskForCollectionItem_1, Code : -1073602332, Sous-composant : (null), Description : Erreur 0xC0014062 lors de la préparation du chargement du package. La méthode LoadFromSQLServer a rencontré le code d’erreur OLE DB 0x80004005 (Échec de la liaison de communication). L’instruction SQL qui a été émise a échoué.
Le problème peut se produire avec n’importe quelle opération qui utilise la méthode Application.LoadFromSqlServer(String, String, String, String, IDTSEvents) ou application.SaveToSqlServer(Package, IDTSEvents, String, String, String) Method lorsque les deux conditions (chiffrement et grande taille de paquets) abordées dans cette section sont vraies.
Cause
Ssl (Secure Socket Layer) et son remplacement, TLS (Transport Layer Security), limitent les fragments de données à une taille de 16 000 (16384). Cela est documenté dans la RFC 2246 publique (section 6.2.2) et l’implémentation actuelle des protocoles réseau et de la couche points de terminaison TDS respecte cette spécification. Par conséquent, lorsque vous utilisez une taille de paquet réseau supérieure à 16 000 dans les environnements où le chiffrement est activé sur SQL Server, vous rencontrerez des erreurs décrites dans la section Symptômes.
Résolution
Pour résoudre ce problème, spécifiez une taille de paquet réseau inférieure ou égale à 16 384 octets. Vous pouvez utiliser le code suivant pour définir l’option network packet size
de configuration de la sp_configure
procédure stockée système :
Remarque
Si MARS est activé, le fournisseur SMUX ajoute un en-tête de 16 octets au paquet avant le chiffrement SSL, ce qui réduit la taille maximale des paquets réseau à 16 368 octets.
EXEC sp_configure 'network packet size', 16368
RECONFIGURE WITH OVERRIDE
GO
La taille du paquet réseau peut également être modifiée via la page Propriétés du serveur dans Explorateur d'objets. Sélectionnez l’option Avancé , tapez la nouvelle valeur pour Taille du paquet réseau , puis cliquez sur OK.
Remarque
Vous n’avez pas besoin de redémarrer SQL Server pour que la modification soit effective. Une fois ce paramètre modifié, toutes les nouvelles connexions reçoivent la nouvelle valeur.
Plus d’informations
Étapes de reproduction
sp_configure 'network packet size', 16384
RECONFIGURE WITH OVERRIDE
GO
Vérifiez que votre collecteur de données est installé.
Définissez la taille du paquet réseau sur une valeur supérieure à 16 Ko.
Cliquez avec le bouton droit sur Collecte de données dans Explorateur d'objets (OE) et Désactivez la collecte de données.
Cliquez avec le bouton droit sur Collecte de données dans OE, puis sélectionnez Activer la collecte de données.
Cliquez avec le bouton droit sur Activité du serveur dans les jeux de regroupements, puis sélectionnez Démarrer le jeu de collecte de données.
Pour obtenir l’erreur, cliquez avec le bouton droit sur Activité du serveur et sélectionnez Collecter et charger maintenant. (Les journaux du contrôleur de domaine affichent l’erreur en détail).