Une application ADO.Net ne peut que parfois se connecter à un autre serveur sur le réseau local. Il semble aléatoire qu'une tentative de connexion donnée réussisse ou échoue. La connexion utilise une chaîne de connexion sous la forme:
Serveur = THESERVER \ TheInstance; Database = TheDatabase; User Id = TheUser; Mot de passe = ThePassword;
l'erreur renvoyée est:
Délai de connexion expiré. Le délai d'expiration s'est écoulé lors de la tentative d'utilisation de l'accusé de réception de la prise de contact préalable à la connexion.
Cela peut être dû au fait que l'établissement de liaison préalable à la connexion a échoué ou que le serveur n'a pas pu répondre à temps.
La durée passée lors de la tentative de connexion à ce serveur était - [Pre-Login] initialization = 42030; poignée de main = 0;
L'application .NET est une petite application de test qui exécute le code suivant:
using (SqlConnection conn = new SqlConnection(cs))
using (SqlCommand cmd = new SqlCommand("SELECT COUNT(*) FROM TheTable", conn))
{
conn.Open();
int rowCount = (int)cmd.ExecuteScalar();
}
La table est petit, seulement 78 lignes.
Cependant, sur la même machine où l'application .NET reçoit cette erreur, je peux me connecter à THESERVER en utilisant SSMS et l'ID utilisateur / mot de passe nommé dans la chaîne de connexion.
Pourquoi la connexion peut-elle échouer à partir d'une application ADO.Net, mais réussir avec des informations d'identification identiques de SSMS?
la source
Réponses:
Il s'est avéré que TCP / IP était activé pour l'adresse IPv4, mais pas pour l'adresse IPv6, de
THESERVER
.Apparemment, certaines tentatives de connexion ont fini par utiliser IPv4 et d'autres ont utilisé IPv6.
L'activation de TCP / IP pour les deux versions IP a résolu le problème.
Le fait que SSMS a fonctionné s'est avéré être une coïncidence (les premières tentatives utilisaient probablement IPv4). Certaines tentatives ultérieures de connexion via SSMS ont abouti au même message d'erreur.
Pour activer TCP / IP pour des adresses IP supplémentaires:
la source
J'ai eu la même erreur qui vient de se produire, qui s'est alignée de manière suspecte sur la dernière série de mises à jour de Microsoft (09/02/2016). J'ai constaté que SSMS s'était connecté sans problème alors que mon application ASP.NET renvoyait l'erreur «Délai d'expiration écoulé lors de la tentative de consommation de l'accusé de réception de la prise de contact avant la connexion»
La solution pour moi était d'ajouter un délai d'expiration de connexion de 30 secondes dans la chaîne de connexion, par exemple:
Dans ma situation, la seule connexion affectée était celle qui utilisait la sécurité intégrée et j'empruntais l'identité d'un utilisateur avant de me connecter, d'autres connexions au même serveur utilisant l'authentification SQL fonctionnaient bien!
2 systèmes de test (clients distincts et serveurs Sql) ont été affectés en même temps, ce qui m'a amené à suspecter une mise à jour de Microsoft!
la source
J'ai résolu le problème comme Eric mais avec quelques autres changements:
ET
la source
J'ai eu le même problème, en essayant de me connecter à un serveur dans un réseau local (via VPN) à partir de Visual Studio, lors de la configuration d'un modèle de données d'entité.
Géré pour résoudre uniquement en définissant
TransparentNetworkIPResolution=false
dans la chaîne de connexion. Dans VS Add Connection Wizard, vous pouvez le trouver dans l'onglet Advanced.la source
J'ai eu le même problème de poignée de main lors de la connexion à un serveur hébergé.
J'ai ouvert mon centre de réseau et de partage et activé IPv6 sur ma connexion réseau sans fil.
la source
Mon exécutable qui a été créé à l'aide de .NET Framework 3.5 a commencé à signaler ces problèmes de connexion environ la moitié des fois après l'installation récente de certaines mises à jour Windows (semaine du 7 août 2017).
Les échecs de connexion ont été causés par .NET Framework 4.7 qui a été installé sur l'ordinateur cible (l'installation automatique des mises à jour Windows était activée) - https://support.microsoft.com/?kbid=3186539
La désinstallation de .NET Framework 4.7 a résolu les problèmes de connexion.
Apparemment, il y a un changement radical dans .Net Framework 4.6.1 - TransparentNetworkIPResolution La mise à jour de la chaîne de connexion selon l'article a également résolu le problème sans qu'il soit nécessaire de restaurer la version du framework.
la source
J'ai corrigé cette erreur sur Windows Server 2012 et SQL Server 2012 en activant IPv6 et en débloquant le port entrant 1433.
la source
Dans notre cas, un problème est survenu en raison de la configuration du cluster de disponibilité. Pour résoudre ce problème, nous avons dû définir
MultiSubnetFailover
sur True dans la chaîne de connexion.Plus de détails sur MSDN
la source
J'ai eu le même problème, j'ai réussi à le résoudre en ouvrant / activant le port 1433 et tcp / ip dans SQL Server Configuration Manager, puis j'ai redémarré le serveur
la source
Dans mon cas, toutes les options étaient déjà là.
Résolu le problème en augmentant le délai d'expiration de la connexion = 30.
la source
Avant de perdre plus de temps à résoudre le problème, comme moi, essayez simplement de redémarrer votre machine Windows . A travaillé pour moi après avoir appliqué toutes les autres solutions.
la source
J'ai eu ce problème lorsque j'ai effectué une migration de SharePoint 2010 vers 2013. Je soupçonnais cela parce que le serveur de base de données est de l'autre côté d'un pare-feu qui n'achemine pas IP6 qu'il essayait alors d'utiliser IP6 et échouait lors de la connexion à la base de données.
Je pense que le problème est maintenant résolu. Les erreurs semblent avoir cessé. Ce que j'ai fait, c'est simplement désactiver IP6 (en le décochant) pour la carte réseau sur les serveurs SharePoint.
la source
J'ai eu ce même problème, mais je me connectais à une base de données distante en utilisant une adresse IP statique. Aucune des solutions ci-dessus n'a donc résolu mon problème.
Je n'avais pas réussi à ajouter le mappage utilisateur approprié pour la connexion de sécurité que j'utilisais, donc la solution pour moi était simplement de m'assurer que le paramètre de mappage utilisateur était défini pour accéder à ma base de données.
la source
Résolution de ce problème en bloquant / en mettant sur liste noire les adresses IP qui tentaient de forcer les comptes d'utilisateurs par force brute. Vérifiez vos journaux d'accès SQL pour un grand nombre de tentatives de connexion infructueuses (généralement pour le compte «sa»).
la source
Pour moi, il s'avère que le pare-feu du serveur Windows bloquait le port 1433, qui est le port du serveur SQL par défaut. Donc, ajouter une règle entrante pour accepter ces connexions a fait l'affaire pour moi.
la source
Dans mon cas, le paramètre
Persist Security Info=true
avec l'utilisateur et le mot de passe dans la chaîne de connexion est à l'origine du problème. Suppression du paramètre ou défini pourfalse
résoudre le problème.la source
Essayez d'abord un simple redémarrage de SQL Server avant de faire quelque chose de radical. Pourrait le réparer. Ça l'a fait pour moi
la source
Malheureusement, j'ai eu un problème avec Local SQL Server installé dans Visual Studio et ici, de nombreuses solutions n'ont pas fonctionné pour moi. Tout ce que j'ai à faire est de réinitialiser mon Visual Studio, en allant sur:
Panneau de configuration> Programme et fonctionnalités> Lanceur d'installation de Visual Studio
et cliquez sur le bouton Plus et choisissez Réparer
Après cela, j'ai pu accéder à mon serveur SQL local et travailler avec des bases de données SQL locales.
la source
J'ai eu le même problème qui se résout automatiquement après la dernière mise à jour de Microsoft Windows, est-ce que quelqu'un rencontre le même problème?
la source
J'ai eu le problème exact, essayé plusieurs soultion ne fonctionnait pas, enfin redémarré le système, cela fonctionnait bien.
la source
Pour suivre l' erreur "Délai de connexion expiré" , veuillez vous assurer que:
la source
Ajout d'une réponse ici, malgré la réponse précédemment acceptée. Comme mon scénario a été confirmé comme étant DNS. Plus précisément, un délai dns pendant la négociation de pré-connexion. En passant d'un nom DNS à une adresse IP (ou en utilisant l'entrée de fichier Hosts), vous contournez le problème. Mais au prix de la perte de la résolution IP automatique.
Par exemple, même avec la valeur de délai d'expiration d'une chaîne de connexion définie sur 60 pendant une minute complète, cela se produirait toujours dans les quelques secondes suivant la tentative. Ce qui amène à se demander pourquoi ce délai d'expiration avant la période de temporisation spécifiée? DNS.
la source