Partager via


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 serveur SQL Server pour utiliser des connexions chiffrées et une option de taille de paquet réseau.

Version du produit d’origine : SQL Server
Numéro de base de connaissances d’origine : 2006769

Symptômes

Tenez compte du scénario suivant pour les environnements SQL Server :

Dans ce scénario, vous remarquerez ce qui suit :

  • Une tentative d’enregistrement des 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 du lien de communication). L’instruction SQL qui a été émise a échoué.

    Note

    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é collecteur de données dans SQL Server qui utilise SSIS s’exécute dans différents problèmes, comme indiqué ci-dessous :

    • Un travail de jeu de données signale les erreurs suivantes dans l’historique des travaux :

    dcexec : Erreur interne au niveau principal (Raison : le système ne trouve pas le fichier spécifié).
    dcexec : Erreur interne au niveau principal (raison : le handle n’est pas valide).

    • Lors de l’exécution d’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 au chargement du package. La méthode LoadFromSQLServer a rencontré le code d’erreur OLE DB 0x80004005 (échec du lien de communication). L'instruction SQL émise a échoué.

Le problème peut se produire avec n’importe quelle opération qui utilise application.LoadFromSqlServer(String, String, String, String, IDTSEvents) ou Application.SaveToSqlServer(Package, IDTSEvents, String, String) Méthode lorsque les conditions (chiffrement et grande taille de paquet) décrites dans cette section sont vraies.

Cause

Ssl (Secure Socket Layer) et son remplacement, Transport Layer Security(TLS), limitez les fragments de données à 16k (16384) en taille. Ceci est documenté dans la RFC 2246 publique (section 6.2.2) et l’implémentation actuelle des protocoles réseau, et la couche Points de terminaison TDS respecte cette spécification. Par conséquent, lors de l’utilisation d’une taille de paquet réseau supérieure à 16 000 dans les environnements où le chiffrement est activé sur SQL Server, vous rencontrez 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 :

Note

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 du paquet réseau à 16368 octets.

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

La taille des paquets réseau peut également être modifiée via la page Propriétés du serveur dans l’Explorateur d’objets. Sélectionnez l’option Avancé et tapez la nouvelle valeur pour la taille du paquet réseau, puis cliquez sur OK.

Note

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

TLS et SSL

Opérations à reproduire

sp_configure 'network packet size', 16384
RECONFIGURE WITH OVERRIDE
GO
  1. Vérifiez que votre collecteur de données est installé.

  2. Définissez la taille du paquet réseau sur une valeur supérieure à 16 Ko.

  3. Cliquez avec le bouton droit sur La collecte de données dans l’Explorateur d’objets (OE) et désactivez la collecte de données.

  4. Cliquez avec le bouton droit sur Collecte de données dans OE, puis sélectionnez Activer la collecte de données.

  5. 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.

  6. Pour obtenir l’erreur, cliquez avec le bouton droit sur Activité du serveur, puis sélectionnez Collecter et charger maintenant. (Les journaux du contrôleur de domaine affichent l’erreur en détail).