Comment déterminer la cause fondamentale de l'échec de la liaison de Communication Fournisseur TCP: le nom de réseau spécifié n'est plus disponible?
Voici mes derniers efforts pour réviser cette question. Mais cette fois, j'essaie de suivre les bons conseils donnés par Oded dans son article Obtenir de bonnes réponses sur StackOverflow.
j'ai besoin de savoir comment je peux déterminer la cause de l'erreur suivante:
Communication link failure
TCP Provider: The specified network name is no longer available
De temps en temps, je vois cette erreur lors de l'exécution d'un ensemble de packages SSIS. Cette erreur peut se produire quand un à plusieurs paquets sont lancés à partir de:
- A SQL Serveur De Travail De L'Agent
- un fichier batch
- en mode debug des BIDS
le message d'erreur complet que je vois est le suivant:
SSIS Error Code DTS_E_OLEDBERROR. An OLE DB error has occurred. Error code: 0x80004005.
An OLE DB record is available. Source: "Microsoft SQL Server Native Client 10.0" Hresult: 0x80004005 Description: "Communication link failure".
An OLE DB record is available. Source: "Microsoft SQL Server Native Client 10.0" Hresult: 0x80004005 Description: "TCP Provider: The specified network name is no longer available.
".
SSIS Error Code DTS_E_OLEDBERROR. An OLE DB error has occurred. Error code: 0x80004005.
An OLE DB record is available. Source: "Microsoft SQL Server Native Client 10.0" Hresult: 0x80004005 Description: "Protocol error in TDS stream".
An OLE DB record is available. Source: "Microsoft SQL Server Native Client 10.0" Hresult: 0x80004005 Description: "Communication link failure".
An OLE DB record is available. Source: "Microsoft SQL Server Native Client 10.0" Hresult: 0x80004005 Description: "TCP Provider: An existing connection was forcibly closed by the remote host."
<!-Voici un aperçu de la façon dont j'ai conçu le processus ETL:
- Deux serveurs
- les Deux sont des machines virtuelles
- les paquets SSIS fonctionnent sur un serveur d'application
- la base de données SQL Server vit sur un serveur de base de données
j'utilise un gestionnaire de connexion OLE DB pour se connecter du paquet SSIS sur le serveur d'application à la base de données SQL Server sur le serveur de base de données.
les paquets fonctionnent comme un déploiement de système de fichiers sur le serveur d'application et non comme un déploiement de base de données sur le serveur de base de données.
la raison principale en est que L'ETL est intégré avec un ensemble d'outils non trouvé sur et des disques non accessibles au serveur de base de données. Ces outils comprennent le chargeur de données Apex pour Salesforce et pgAdmin III.
<!-Jusqu'à présent, je ne peux pas reproduire cette erreur de façon constante. Cependant, c'est ce que j'ai observé:- L'échec se produit plus souvent pendant les heures normales de bureau
- Échec se produit moins fréquemment pendant les heures creuses
l'erreur s'est produite pendant un grand flux de données si un paquet enfant appel qui précède le grand flux de données a été activée.
l'erreur ne s'est pas produite pendant le même grand flux de données si l'appel de paquet d'enfant qui précède le grand flux de données était désactivé.
le paquet enfant en question rappelle à la base de données pour récupérer une infime quantité d'informations à utiliser dans un corps de courrier électronique et envoie ensuite le courrier électronique.
on a l'impression qu'une limite de ressources est dépassée?
Peut-être une limite de connexion?
je me demande quels outils je devrais utiliser pour essayer de déterminer la cause profonde de l'erreur.
détails Techniques sur les deux serveurs concernés sont énumérés ci-dessous:
SQL Server et le Serveur de Base de données info:
Microsoft SQL Server 2008 R2 ( SP1) - 10.50.2500.0 (X64) Jun 17 2011 00:54: 03 Copyright (c) Microsoft Corporation Enterprise Edition (64-bit) on Windows NT 6.1 (Build 7601: Service Pack 1) (Hyperviseur)
SSIS info:
Microsoft Visual Studio 2008 Version 9.0.30729.1 SP
Microsoft .net Framework Version 3.5 SP1
Serveur d'Application info:
Nom du système D'exploitation: Microsoft Windows Server 2008 R2 Standard
Version: 6.1.7601 Service Pack 1 Build 7601
j'ai cherché le message d'erreur en ligne et j'ai trouvé ceci, mais j'aimerais vraiment avoir l'avis d'un expert avant procédure:
comment désactiver TCP Chimney, TCPIP Offload Engine (TOE) ou TCP Segmentation Offload (TSO).
utiliser les commandes Netsh pour activer ou désactiver le déchargement de la cheminée TCP
Toute aide est appréciée.
Merci
mise à jour:
D'autres tests montrent que ce n'est pas "une chose SSIS" car la même erreur est perçue au même rythme lorsque vous utilisez SQL Server Management Studio. La complexité de la requête ne rend pas l'erreur plus ou moins probable. Dans une tentative de résoudre, nous avons essayé une solution (ci-dessous):
#1 How to Disable TCP Chimney, TCPIP Offload Engine (TOE) or TCP Segmentation Offload (TSO).
C'était notre première tentative. TCP Chimney est maintenant désactivé sur le serveur D'Application et le serveur de base de données. Les tests montrent que la même erreur se produit au même taux.
Alors, où aller à partir d'ici? Honnêtement, je ne suis pas sûr. Il reste une option apparemment bonne:
Serveur d'Applications et le Serveur de Base de données SQL Server installations ne correspondent pas exactement
Application Server = SQL Server 2008 ( SP1) - 10.0.2531.0 (X64)
Database Server = SQL Server 2008 R2 (SP1) - 10.50.2500.0 (X64)
le plan est de mettre à niveau L'installation du serveur SQL sur le serveur D'Application. C'est une sorte de succès et d'espoir, mais à ce stade, cela semble être la meilleure option. Quelque chose dans mon cerveau me dit que cela pourrait être résolu en réparant un problème de matériel (par cela je veux dire une réparation ou un remplacement) et qu'il pourrait n'y avoir rien que le matériel et la configuration du logiciel peut faire à ce sujet.
cependant, je ne suis toujours pas sûr de savoir comment déterminer une cause profonde. Je me demande encore quels outils je devrais utiliser pour diagnostiquer la cause profonde.
3 réponses
avez-vous un logiciel AV côté serveur D'Application? Si oui, essayez de désactiver AV - sometime AV bloque le trafic TCP/IP. Problème avec "le nom de réseau spécifié n'est plus disponible" a été résolu en désactivant AV ici: https://community.spiceworks.com/topic/239423-the-specified-network-name-is-no-longer-available-while-writing-to-shared-dir
- tout d'Abord avez-vous essayé de supprimer les grandes déchargement d'envoi de réglage sur la carte ?
- Deuxième point, vous pouvez exécuter une wireshark pour capturer les paquets si vous pouvez reproduire l'erreur ?
- troisième point, Avez-vous essayé de changer le vnic de la VM ? certains modèles peuvent causer problème. (Si vous utilisez vmxnet3, essayez e1000, etc..)
- Dernier point, est-ce que vous avez un vswitch entre eux, ils sont sur le même hôte, un commutateur physique entre les deux, etc... Un interrupteur mal configuré peut supprimer du trafic, si à l'intérieur de l'hôte le même hôte et le même vswitch c'est le meilleur test, car le trafic ne quitte jamais le serveur.
essayez D'utiliser ODBC au lieu de OLE DB pour votre connexion à la base de données.