Initiale de la connexion à SQL Server Connexion Est Lente. Pourquoi?
J'ai couru dans une situation avec une application C# installé sur deux sites où la première connexion à SQL Server est extrêmement lent. J'ai écrit une application de test pour vérifier où le ralentissement se produit et il est sur la première occurrence de SQLConnection.Instruction Open. Il prenait environ 41 secondes pour établir une connexion au serveur via des canaux nommés. Nous avons pensé qu'il pourrait être un problème de DNS, mais il est tout aussi lente à l'aide d'une connexion TCP/IP. Après la première connexion est établie, la connexion est mis en commun et l'application répond normalement. À la fois le poste de travail et le serveur sont décents machines fonctionnant sous Windows 7 Pro, Core 2 Duo 3.16 Ghz avec 4 go de Ram. J'ai trouvé l'article suivant sur un microsoft forum:
Désactivation de la LLMNR le protocole a coupé la connexion initiale à temps dans la moitié environ de 21 secondes. Cependant, c'est encore un long moment pour se faire une première connexion à SQL Server. Les seules choses que légèrement différente de la notre norme est que les DNS dans ce cas, est effectué par un routeur et non un serveur réel. Cela s'est produit à seulement deux endroits si loin, d'autres tournent sans problèmes. Toute aide serait appréciée.
Merci,
Dennis
OriginalL'auteur user281677 | 2010-11-24
Vous devez vous connecter pour publier un commentaire.
Devant le serveur sur la chaîne de connexion, ajouter
np:
Cela devient
Server=np:server\instance
et les forces de l'canaux Nommés au lieu de la valeur par défaut de TCP.Je n'aurais probablement changé la priorité à l'utilisation de canaux Nommés avant que le protocole TCP... mais je n'ai pas envie de jouer avec que sur le serveur.
Pas toujours l'idéal, mais j'ai été coincé entre une roche et un endroit dur et il a travaillé pour moi. J'ai fait pire.
Cela a fonctionné pour moi. Penser qu'avec l'ajout de trois caractères de la chaîne de connexion faire une telle différence. Pour info Notre serveur est Windows 8 et les bornes d'exécuter Windows 7
Patterson - Pourriez-vous fournir un exemple avec une chaîne de connexion complète dans votre réponse?
cela a résolu mystérieux gal pour moi sur windows sbs 2011 avec sql server 2012
OriginalL'auteur Perry Patterson
J'ai vu le même problème mais pas sûr que c'est la même que la vôtre. Dans mon cas, ce n'est pas seulement le programme C# étant lent pour faire la connexion SQL. Tous les outils de la connexion à SQL server aussi l'expérience de la lenteur. Aussi, une fois la première connexion à SQL server, toutes les connexions suivantes sont bons pour une période de temps.
La raison en était que SQL server à l'aide d'un numéro de la gestion des assemblées. C'est en essayant de vérifier le cerfiticates attribués aux assemblées. C'est la connexion de la crl.microsoft.com. Mon serveur SQL n'ai pas la connexion internet. Donc, il attend la fin de la temporisation.
La solution était de faire de mon serveur SQL pour avoir accès à internet ou de désactiver la vérification de la CRL. Vous pouvez aller à l'ordinateur SQL server. Sélectionnez Outils > Options Internet > Avancé. Vérifier si le certificat de l'éditeur de révocation en vertu de la secuity nœud est cochée ou non. Si elle est cochée, décochez-la.
OriginalL'auteur Harvey Kwok
J'ai essayé de spécifier la chaîne de connexion avec sécurité intégrée = false (sens de l'id utilisateur et le mot de passe sont dans la chaîne de connexion) et chiffrer = false (juste être sûr à 100% de cryptage SSL n'est pas utilisé). Ces spécifications ne semble pas aider et je ne pouvais pas obtenir une connexion explicitement en utilisant le protocole TCP/IP de réseau de la bibliothèque (bibliothèque réseau = "dbmssocn"). Cela pourrait avoir à faire avec le serveur de pare-feu et le port n'est pas ouvert. Je remis aux canaux nommés et mettre le tube nommé réseau de la bibliothèque de la spécification dans la chaîne de connexion en ce moment (bibliothèque réseau = "dbnmpntw"). Après ce changement, la connexion a été faite instantanément.
OriginalL'auteur user281677
Oui lorsque vous êtes à l'aide de la sécurité intégrée, Active Directory peut être le seul à blâmer, aussi l'ensemble du réseau puisque tout dépend. Une autre chose que je pouvais penser est l'édition de SQL Server que vous utilisez.
Aussi, lorsque SQL Server n'est pas utilisé par de longues périodes de temps, il se comporte de façon similaire à IIS, en mettant les processus de travail pour dormir, donc quand vous contacter de nouveau le serveur, en fonction de la machine (on peut voir que ceux-ci ont des machines de bureau configurations), il faudra un certain temps alors que le processus de travail revient à la vie et est prêt à fonctionner.
OriginalL'auteur Luis Aguilar
Vous n'vérifier ce qui est évident-je le prendre? Que le port UDP 1434 est ouvert sur le pare-feu et le service explorateur d'ordinateur est en cours d'exécution .... faudrait environ 40 sec pour authentifier le contraire.
OriginalL'auteur MGDesKSo
L'établissement d'une connexion de sécurité intégrée à SQL Server à l'aide de l'adresse IP (au lieu d'un nom d'hôte), permettra d'éviter l'authentification Kerberos utilisé. Dans ce scénario, vérifiez la connexion entre le Serveur SQL et le contrôleur de domaine.
Si vous vous connectez en utilisant le nom d'hôte (et non l'Adresse IP) Kerbos est en jeu, dans ce cas, vous devez vérifier la machine du client de connexion au contrôleur de domaine.
OriginalL'auteur Mick
il existe d'autres moyens de créer des connexions à des bases de données SQL. Essayez de trouver un tutoriel qui utilise le
sqlconnection myCon = new sqlconnection(details);
au lieu de créer un objet instance de la connexion.
OriginalL'auteur liam
Je n'ai pas de réponse concrète, mais avez-vous essayé de lancer le générateur de profils SQL pour voir ce qui se passe à partir de SQL point de vue?
Aussi avez-vous essayé de vous connecter à SQL en utilisant les mêmes identifiants que votre connexion?
D'autre part, ils peuvent tous être beaucoup plus faible niveau, mais je le fais toujours facile à vérifier d'abord.
Bonne Chance.
OriginalL'auteur Mike Mengell
Cela ressemble à de résolution de nom est de prendre un certain temps ou d'authentification est de prendre un certain temps. Après la résolution initiale ou de l'authentification du produit, puis les détails des points de terminaison sont mis en cache par le serveur de sorte qu'il n'a pas besoin d'effectuer les recherches à nouveau jusqu'à ce que les caches de date d'expiration.
Comme une expérience, essayez de ping avec le serveur à partir de la boîte de client -- si cela prend beaucoup de temps pour résoudre le nom d'hôte, alors vous avez trouvé le coupable: le nom d'hôte recherches (DNS ou NBNS). Une autre alternative consiste à utiliser l'adresse IP de l'hôte plutôt que de nom. Donc si vous avez une instance nommée de SQL Server de
bob
sur le serveursql2005-01
, et ce serveur a une IP192.168.200.12
, puis essayez de vous connecter à192.168.200.12\bob
au lieu desql2005-01\bob
.Authentification est plus difficile à résoudre, mais vous pourriez être en mesure de tester avec runas sur la zone SQL server (par exemple,
runas /user:domain\user cmd
pour voir si vous pouvez ouvrir une invite de commande en tant qu'utilisateur vous êtes de la tentative d'authentification.OriginalL'auteur Chris J
Il pourrait facilement être un problème avec la connexion ou de l'authentification, il est normal que la première connexion prend plus de temps aussi ADO.NET a la connexion de la piscine pour éviter que de long temps de connexion.
Il y a beaucoup de facteurs qui peuvent influencer la vitesse:
- Configuration TCP/IP
- Les routeurs sur le côté serveur
- etc.
OriginalL'auteur João Silvestre
Nous avons eu le même problème, et il s'est avéré que notre hébergés à distance à un serveur Active Directory était à blâmer.
Nous avons créé un site-annuaire Active Directory local serveur de reproduire le hébergée à distance AD maître, et tous nos lent SQL Server intégré de la sécurité de l'authentification des problèmes de performances s'en alla.
J'espère que ça aide.
OriginalL'auteur Chris Geihsler
Toujours si vous êtes confrontés à la question, veuillez voir le coup de la résolution:
Cause
La question qui nous avons été voir sur Win7 VDIs pourrait être dû au matériel de Réseau de l'appareil connecté à la machine. Si TCP/IP mise à l'échelle n'est pas pris en charge par le périphérique réseau, puis la performance sera lente.
Solution
Désactiver le réglage automatique du niveau de la TCP. Veuillez suivre les étapes ci-dessous:
1) Ouvrez l'Invite de commande avec droit d'administration (Exécuter en tant qu'Administrateur)
2) Tapez “netsh interface tcp set global autotuninglevel=disabled”
3) Après exécution de la commande ci-dessus de redémarrer la machine.
Pour d'autres informations sur cette commande, visitez le lien “http://support.microsoft.com/kb/935400”
OriginalL'auteur Munna Kumar Singh
J'ai eu le même problème. Après une recherche intensive sur google et stackoverflow, j'ai changé l'ordinateur client du fichier hosts (Dans windows,situé à C:\Windows\System32\drivers\etc).J'ai entré mon adresse ip de l'hôte et le nom du serveur dans ce fichier, et voilà!. Les choses sont devenues ultra-rapide!
Comme tout le monde dans stackoverflow dit, c'était l'ordinateur à la recherche de la servername adresse dans le service DNS et d'obtenir un délai d'attente.
Les étapes que j'ai fait de la façon suivante.L'essayer si rien d'autre ne fonctionne.
1.Ouvrez l'invite de commande et la commande ping sur votre serveur,où la base de données distante est situé. Pour ce faire, entrez la commande suivante:
Ici mon nom de l'ordinateur distant a été Juno. Donc, je devrais ping comme ça.
Cette commande ping sur mon serveur et renvoie l'adresse ip de ce genre.
Comme vous pouvez le voir l'adresse ip du serveur se trouve entre les crochets.
Copie l'adresse ip.
2.Maintenant, Ouvrez le fichier Hosts avec le bloc-notes élevées(Exécuter en tant qu'administrateur).
À la fin du fichier hosts,il y aura des lignes comme celles-ci:
Au bas de la liste (ici,après que le localhost),tapez # puis saisissez l'adresse ip du serveur nous avons juste obtenu précédé par le nom du serveur.
Donc, le fichier hosts devrait ressembler à ceci.
Et là vous allez!
Pour plus d'informations sur la modification de votre fichier hosts,cliquez ici
OriginalL'auteur Athul AS
Dans mon cas, la réponse a été:
OriginalL'auteur SteveCav