Une erreur de niveau de transport s'est produite lors de la réception des résultats du serveur [fermé]

j'obtiens une erreur de serveur SQL:

une erreur de niveau de transport s'est produite lors de la réception des résultats de l' serveur. (fournisseur: Mémoire Partagée Fournisseur, erreur: 0 - la poignée est invalide.)

j'exécute Sql Server 2008 SP1, Windows 2008 Standard 64 bit.

c'est une application web .Net 4.0. Cela se produit lorsqu'une requête est faite au serveur. C'est intermittente. N'importe quelle idée de comment je peux le résoudre?

148
demandé sur Sнаđошƒаӽ 2010-06-03 06:16:52

21 réponses

la connexion à la base de données est fermée par le serveur de base de données. La connexion reste valide dans le pool de connexion de votre application; en conséquence, lorsque vous récupérez la chaîne de connexion partagée et que vous essayez de l'exécuter, elle ne peut pas atteindre la base de données. Si vous développez Visual Studio, fermez simplement le serveur web temporaire sur votre barre de tâches.

si cela se produit dans la production, réinitialiser votre pool d'applications pour votre site web devrait recycler le pool de connexion.

82
répondu Michael Olivero 2012-11-08 08:48:10

essayez la commande suivante sur l'invite de commande:

netsh interface tcp set global autotuning=disabled

cela éteint les capacités de mise à l'échelle automatique de la pile réseau

14
répondu Simmo 2016-05-26 07:56:30

pour ceux qui n'utilisent pas IIS, j'ai eu ce problème lors du débogage avec Visual Studio 2010. J'ai terminé tous les processus de débogage: WebDev.WebServer40.EXE qui a résolu le problème.

12
répondu jth_92 2012-10-24 14:16:29

j'ai eu le même problème. J'ai redémarré Visual Studio et cela a réglé le problème

12
répondu piris 2014-01-21 19:46:30

Tout ce dont vous avez besoin est D'arrêter le ASP.NET serveur de développement et exécuter le projet à nouveau

7
répondu MishMish 2013-07-31 08:07:28

obtenait ceci, toujours après environ 5 minutes d'opération. L'enquête a révélé qu'un avertissement de e1iexpress se produisait toujours avant la défaillance. Il s'agit apparemment d'une erreur liée à certains adaptateurs TCP/IP. Mais passer du WiFi au hardwired ne l'a pas affecté.

donc essayé Plan B et redémarré studio visuel. Puis il a bien fonctionné.

sur une étude plus approfondie, j'ai remarqué que, en travaillant correctement, le message The Thread '<No Name>' has exited with code 0 survenu à presque exactement au moment où la course s'est écrasé lors de précédentes tentatives. Certaines recherches sur Google révèlent que ce message apparaît lorsque (entre autres choses) le serveur coupe le pool de threads.

probablement il y avait un faux thread dans le pool de threads et chaque fois que le serveur tentait de le" couper " il prenait l'application vers le bas.

4
répondu Hot Licks 2014-05-14 21:48:17

si vous êtes connecté à votre base de données via Microsoft SQL Server Management, fermez toutes vos connexions et réessayez. Avait cette erreur lorsqu'il était connecté à une autre base de données Azure, et a travaillé pour moi quand il a fermé. Ne sais toujours pas pourquoi ..

3
répondu watabou 2012-02-05 00:46:49

vous recevez ce message lorsque votre script fait arrêter le service SQL pour certaines raisons. donc, si vous commencez à nouveau le service SQL, peut-être que votre problème sera résolu.

3
répondu Mohammad Sheykholeslam 2012-05-28 12:38:38

je sais que cela peut ne pas aider tout le monde (qui sait, peut-être que oui), mais j'ai eu le même problème et après un certain temps, nous avons réalisé que la cause était quelque chose hors du code lui-même.

l'ordinateur essayant d'atteindre le serveur, était dans un autre réseau, la connexion pouvait être établie mais ensuite abandonné.

La façon dont nous avons utilisé pour la fixer, était d'ajouter une route statique à l'ordinateur, permettant un accès direct au serveur sans passer par le pare.

route add –p YourServerNetwork mask NetworkMask Router 

échantillon:

route add –p 172.16.12.0 mask 255.255.255.0 192.168.11.2 

j'espère que ça aidera quelqu'un, c'est mieux d'avoir ça, au moins comme indice, donc si tu l'affrontes, tu sais comment le résoudre.

3
répondu coloboxp 2014-04-04 14:55:10
Les erreurs de niveau de Transport

sont souvent liées au fait que la connexion au serveur sql est rompue ... habituellement réseau.

Timeout expiré est généralement lancé quand une requête sql prend trop de temps à exécuter.

donc peu d'options peuvent être:

  1. vérifier la connexion en VPN (si utilisé) ou tout autre outil
  2. Restart IIS
  3. Machine à redémarrer
  4. optimiser sql requête.
3
répondu NG. 2017-07-26 13:31:26

j'ai eu la même erreur dans Visual Studion 2012 environnement de développement, arrêté L'IIS Express et relancer l'application, il a commencé à fonctionner.

2
répondu Murthy M 2013-03-20 00:29:56

regardez le MSDN blog qui détaille cette erreur:

Enlèvement De Connexions

le pooler de connexion supprime une connexion de la piscine après qu'il a été inactif pendant une longue période, ou si le pooler détecte que le la connexion avec le serveur a été interrompue.

notez qu'une connexion coupée ne peut être détectée qu'après avoir tenté pour communiquer avec le serveur. Si une connexion est trouvée c'est pas plus connecté au serveur, il est marqué comme non valide.

les connexions Invalides sont retirées du pool de connexion uniquement lorsque elles sont fermées ou récupérées.

si une connexion existe vers un serveur qui a disparu, ceci la connexion peut être tirée de la piscine, même si la connexion pooler n'a pas détecté la connexion coupée et l'a marquée comme invalide.

C'est le cas parce que les frais généraux de vérifier que la connexion est encore valide éliminerait les avantages d'avoir un pooler par l'origine d'un autre aller-retour vers le serveur.

Lorsque cela se produit, la première tentative d'utiliser la connexion détecter que la connexion a été coupée, et qu'une exception est faite.

Fondamentalement, ce que vous voyez est l'exception dans la dernière phrase.

A la connexion est prise à partir du pool de connexion, l'application ne ne pas savoir que la connexion physique est parti, une tentative d'utilisation il est fait sous l'hypothèse que la connexion physique est toujours là.

et vous avez votre exception.

Il y a quelques raisons à cela.

  1. le serveur a été redémarré, cela va fermer les connexions existantes.

dans ce cas, jetez un oeil au Journal du serveur SQL, habituellement trouvé à: C:\Program fichiers\Microsoft SQL Server\\MSSQL\LOG

si la date de démarrage est très récente, alors nous pouvons soupçonner que c'est ce qui a causé l'erreur. Essayez de corréler cette date avec le temps de l'exception.

2009-04-16 11:32:15.62 Logging Server SQL Server messages in file ‘C:\Program fichiers\Microsoft SQL Server\MSSQL.1\MSSQL\LOG\ERRORLOG".

  1. Quelqu'un ou quelque chose a tué la araignée qui est utilisée.

encore une fois, jetez un oeil dans le log du serveur SQL. Si vous trouvez un tueur, essayez de corrélez ce horodatage avec le temps d'exception.

2009-04-16 11:34:09.57 spidXX ID de Processus XX a été tué par nom d'hôte xxxxx, identifiant du processus hôte XXXX.

  1. il y a un basculement (dans un miroir exemple) encore une fois, jetez un coup d'oeil dans le log du serveur SQL.

s'il y a un basculement, essayer de corréler cette estampille temporelle avec le temps d'exception.

2009-04-16 11:35:12.93 spidXX La base de données en miroir "" est l'évolution des rôles de "CAPITAL" pour "MIROIR" en raison de Basculement.

2
répondu Rahul Tripathi 2016-05-10 05:39:46

j'ai eu le même problème. Je l'ai résolu, en tronquant le journal du serveur SQL. Vérifiez cela, puis dites-nous, si cette solution vous a aidé.

1
répondu Lucas 2013-04-05 15:43:34

pour moi la réponse est de mettre à niveau L'OS de 2008R2 à 2012R2, la solution d'iisreset ou redémarrer apppool n'a pas fonctionné pour moi. J'ai aussi essayé de désactiver le réglage de la cheminée TCP, mais je n'ai pas redémarré le serveur parce que c'est un serveur de production, qui n'a pas fonctionné non plus.

1
répondu Bruce Liu 2014-03-24 03:05:41

pour moi, la solution était totalement différente.

dans mon cas, j'avais une objectsource qui nécessitait un paramètre datetimestamp. Même si ce paramètre ODS ConvertEmptyStringToNull était vrai 1/1/0001 était passé à SelectMethod. Cela a à son tour causé une exception de débordement de DateTime sql lorsque cette datetime a été transmise au serveur sql.

a ajouté un contrôle supplémentaire pour datetime.de l'année != 0001 et ça a résolu le problème pour moi.

Bizarre qu'il lancerait une erreur de niveau de transport et pas une erreur de débordement datetime. De toute façon..

1
répondu KonaRin 2014-06-25 23:30:28

nous avons rencontré cette erreur récemment entre notre serveur d'affaires et notre serveur de base de données. La solution pour nous était de désactiver le "déchargement IP" sur les interfaces réseau. Ensuite, l'erreur a disparu.

1
répondu Dave 2014-07-10 22:17:45

L'une des raisons pour lesquelles j'ai trouvé cette erreur est Taille du paquet=xxxxx " dans la chaîne de connexion. si la valeur de xxxx est trop grande, nous allons voir cette erreur. Soit vous supprimez cette valeur et laissez SQL server s'en charger, soit vous la maintenez basse, en fonction des capacités du réseau.

1
répondu Naresh Mittal 2014-08-18 06:15:29

cela m'est arrivé quand j'ai essayé de restaurer une base de données SQL et que j'ai coché la case suivante dans Options onglet,

enter image description here

comme c'est un serveur de base de données autonome fermant les SSM et le rouvrant a résolu le problème pour moi.

1
répondu Muhammad Raja 2016-02-02 09:49:02

dans mon cas, le service Serveur" SQL Server " a cessé. Quand j'ai redémarré le service qui m'a permis d'exécuter la requête et d'éliminer l'erreur.

c'est aussi une bonne idée d'examiner votre requête pour savoir pourquoi la requête faite ce service stop

enter image description here

1
répondu user3447136 2016-04-07 07:13:04

cela se produit lorsque la base de données est abandonnée et re-créé certaines ressources partagées est toujours considérant la base de données existe toujours, donc lorsque vous ré-exécutez requête pour créer des tables dans la base de données après qu'il a été re-créé l'erreur ne s'affichera plus et Command(s) completed successfully. message s'affichera à la place du message d'erreur Msg 233, Level 20, State 0, Line 0 A transport-level error has occurred when sending the request to the server. (provider: Shared Memory Provider, error: 0 - No process is on the other end of the pipe.) .

ignorez simplement cette erreur lorsque vous supprimez et recréez des bases de données et ré-exécutez vos requêtes DDL sans aucun souci.

1
répondu Ashraf Abusada 2016-05-09 11:32:20

j'ai fait face à la même question récemment, mais je n'ai pas été en mesure d'obtenir la réponse dans google. Alors j'ai pensé le partager ici, pour qu'il puisse aider quelqu'un dans le futur.

erreur:

pendant l'exécution de la requête la requête fournira peu de sortie alors il jettera l'erreur ci-dessous.

" une erreur de niveau de Transport s'est produite lors de la réception de la serveur(TCP:fournisseur d'erreur:0 - nom réseau spécifié n'est plus disponible"

Solution:

  1. Vérifier le fournisseur d'accès de ce serveur lié
  2. dans les propriétés de ce fournisseur ,activez l'option" Allow inprocess " pour que ce fournisseur en particulier puisse corriger la question.
0
répondu Pradeepa.PK 2015-06-23 01:51:29