Message d’erreur « Échec du lien de communication » est signalé pour les packages SSIS sur des serveurs SQL configurés pour utiliser le cryptage et une taille de paquet réseau de grande taille


Symptômes


Envisagez le scénario suivant pour les environnements SQL Server 2005 ou SQL Server 2008 :

  • Vous configurez votre SQL Server pour utiliser le protocole SSL pour les connexions.
  • Vous configurez votre serveur SQL pour utiliser une taille de paquet réseau qui est supérieure à la valeur par défaut (4 Ko)

Dans ce scénario, vous remarquez les éléments suivants :

  • Une tentative d’enregistrer les packages SSIS dans le magasin de package MSDB échoue avec le message d’erreur suivant :

La méthode SaveToSQLServer a rencontré le code d’erreur OLE DB 0 x 80004005 (Échec de liaison de Communication). L’instruction SQL émise a échoué.

Remarque :Vous exécutez également dans le message d’erreur ci-dessus lors de l’enregistrement de plans de maintenance créés dans SQL Server Management Studio en tant que packages SSIS de bases de données MSDB depuis cette opération intrinsèquement utilise le cryptage pour les connexions à SQL Server.

  • Fonctionnalité de collecteurs de données dans SQL Server 2008 qui utilise SSIS, s’exécute dans divers problèmes comme indiqué ci-dessous :
    • Un travail de l’ensemble de Collection de données signale les erreurs suivantes dans l’historique du travail :

dcexec : erreur : erreur interne à la Main (raison : le système ne peut pas trouver le fichier spécifié) .dcexec : erreur : erreur interne à la Main (raison : le handle n’est pas valide).

    • Lors de l’exécution d’un ensemble de la Collection 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 de collecteur de données vous trouverez un message d’erreur semblable au suivant.

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 0 x 80004005 (Échec de liaison de Communication).  L’instruction SQL émise a échoué.

Remarque: ce problème peut se produire avec n’importe quelle opération qui utilise des méthodes LoadFromSqlServer ou de SaveToSqlServer lorsque les deux conditions (le cryptage et la taille de paquet importante) décrites dans cette section sont remplies.

Cause


Secure Socket Layer (SSL) et son remplacement, Security(TLS) de couche de Transport, les fragments de données limite à 16 Ko (16384). Ce problème est documenté dans le public RFC 2246 (section 6.2.2) et que l’implémentation actuelle de la couche d’Interface de réseau de SQL (SNI) est conforme à cette spécification. Afin que, lorsque vous utilisez une taille de paquet réseau qui est supérieure à 16 Ko dans les environnements où le cryptage est activé sur SQL Server, vous rencontrerez les erreurs décrites dans la section Symptômes. Pour plus d’informations, reportez-vous à l’article suivant de la base de connaissances :

  • 2008195Issues à prendre en compte lors de la modification de la valeur par défaut de la taille du paquet réseau pour les connexions SQL server

Résolution


Pour résoudre ce problème, spécifiez une taille de paquet réseau qui est inférieure ou égale à 16 384 octets.Vous pouvez utiliser le code suivant pour définir l’option de configuration taille du paquet réseau de la procédure stockée système sp_configure :

Remarque Si MARS est activé, le fournisseur SMUX ajoute un en-tête de 16 octets au paquet avant le cryptage SSL, réduction de la taille de paquet réseau maximale à 16368 octets.

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

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

Remarque: vous n’avez pas besoin de redémarrage de SQL Server pour que la modification soit effective. Après la modification de ce paramètre, toutes les nouvelles connexions reçoivent la nouvelle valeur.

Informations supplémentaires


Procédure pour reproduire le :
sp_configure 'network packet size', 16384
RECONFIGURE WITH OVERRIDE
GO
  1.  Assurez-vous que votre collecteur de données est installé.
  2.  Définir la taille du paquet réseau sur une valeur supérieure à 16 Ko.
  3. Cliquez avec le bouton droit sur Collecte de données dans l' Explorateur d’objets (OE) et de désactiver la collecte de données.
  4. Cliquez avec le bouton droit sur Collecte de données dans Outlook Express, puis sélectionnez Activer la collecte de données.
  5. Cliquez avec le bouton droit sur L’activité du serveur dans les jeux de la collection, puis sélectionnez Démarrer un ensemble de Collection de données.
  6. Pour obtenir l’erreur, cliquez avec le bouton droit sur L’activité du serveur et sélectionnez collecter et télécharger maintenant. (Les journaux DC affichent l’erreur en détail).