2009-06-23 4 views
11

Nous continuons d'obtenir cette erreur de manière aléatoire dans notre application Web. Il serait logique que nous ayons l'erreur de temps en temps mais pour l'obtenir par intermittence suggérer quelque chose d'autre se passe.Pourquoi devrais-je obtenir cette erreur par intermittence? "Le serveur n'a pas été trouvé ou n'était pas accessible"

Quelqu'un at-il vécu cela? Des suggestions ou des théories?

Merci!

+1

cela se produit-il pendant la fenêtre de sauvegarde du serveur sql? –

+2

sinon je peux suspecter une carte réseau ou un routeur/commutateur –

+1

comme quelqu'un l'a suggéré, votre serveur SQL jamais manquer de CPU ou de mémoire? suggère de poster votre configuration matérielle ... –

Répondre

6

Il est possible que le serveur soit trop occupé pour répondre - utilisez-vous SQL Express ou Workgroup Edition? Aussi, combien de connexions à la fois ce serveur a-t-il? Cette erreur se produit-elle sur toutes les connexions à un moment donné, ou certaines connexions sont-elles rejetées alors que d'autres réussissent en même temps? De plus, si vous faites un "PING -t Servername" et que vous le regardez, chaque ping revient-il ou est-il perdu? Cela peut être un indicateur des interruptions du réseau qui peuvent également provoquer cette erreur.

4

Je l'ai déjà vu lorsque j'accédais à un serveur distant à un autre endroit. Je soupçonnais que c'était dû à la configuration du routeur entre les deux sites car c'était, dirons-nous, cludgy. Il est tout à fait possible que vous l'obteniez à cause d'une configuration réseau ou d'un mauvais matériel, mais je ne sauterais pas à cette conclusion avant d'avoir épuisé beaucoup d'autres possibilités.

5

Nous l'avons eu à cause de trop de pare-feu: plus le client est loin (disons HK ou NY, nous sommes en Suisse) plus il arrive souvent. Londres: rarement. Suisse: jamais. Il nous a été expliqué (via notre ingénierie DB et MS help) que les retards dus aux routeurs et aux pare-feu perturbaient parfois Kerberos et/ou les synchronisations associées.

Correction: utilisez le port dans la chaîne de connexion. Cela évite l'aller-retour au port 1434 pour énumérer l'instance. Nous avons déjà utilisé le FQDN.

Exemple: server.domain.tld \ par exemple, le port

YNNV bien sûr, mais cela a fonctionné pour nous

4

J'ai eu exactement le même problème; nous avons également obtenu celui-ci:

System.Data.SqlClient.SqlException: An error has occurred while establishing a connection to the server. When connecting to SQL Server 2005, this failure may be caused by the fact that under the default settings SQL Server does not allow remote connections. (provider: Named Pipes Provider, error: 40 - Could not open a connection to SQL Server)

et celui-ci:

System.Data.SqlClient.SqlException: A transport-level error has occurred when sending the request to the server. (provider: TCP Provider, error: 0 - An existing connection was forcibly closed by the remote host.)

Le premier était particulièrement étrange, car nous ne Named Pipes.

De toute façon, il s'est avéré que le problème était un interrupteur défectueux. J'ai corrigé le dépannage au niveau de l'application et de la base de données avant de configurer une tâche planifiée pour passer d'une application à l'autre entre les serveurs d'applications et les bases de données (en utilisant l'adresse IP et le nom NETBIOS des serveurs). recherche de nom netbios). Les erreurs de ping se sont produites de manière fiable en même temps que les erreurs DB, donc nous savions que c'était le matériel réseau et pas n'importe quoi à un niveau supérieur.

Le remplacement de l'interrupteur a tout fixé.

Questions connexes