web-dev-qa-db-fra.com

Interfaces réseau SQL, erreur: 26 - Erreur lors de la localisation du serveur/instance spécifiée

Eh bien, j'ai un gros problème que j'essaye de résoudre pendant des jours mais je ne pouvais pas le faire, alors j'ai besoin de votre aide. J'ai une application Web dans asp.net 4.0 où j'ai implémenté des fournisseurs d'appartenance et de rôle personnalisés. Lorsque j'ouvre la page d'accueil de l'application, elle se connecte à la base de données et récupère certaines informations. Il existe également un formulaire de connexion. Lorsque je me connecte, il valide l'utilisateur via la base de données et me redirige vers les pages réservées, mais cette erreur apparaît:

Une erreur liée au réseau ou spécifique à une instance s'est produite pendant que établir une connexion à SQL Server. Le serveur n'a pas été trouvé ou n'était pas accessible. Vérifiez que le nom de l'instance est correct et que SQL Server est configuré pour autoriser les connexions à distance. (fournisseur: SQL Interfaces réseau, erreur: 26 - Erreur lors de la localisation du serveur/de l’instance spécifiée)

La description:  

Une exception non gérée s'est produite lors de l'exécution du fichier .__ en cours. demande web. Veuillez consulter la trace de la pile pour plus d'informations sur l'erreur et son origine dans le code.

Détails de l'exception:  

System.Data.SqlClient.SqlException: une relation liée au réseau ou Une erreur spécifique à une instance s'est produite lors de l'établissement d'une connexion à Serveur SQL. Le serveur est introuvable ou inaccessible. Vérifier que le nom de l'instance est correct et que SQL Server est configuré pour autoriser les connexions à distance. (fournisseur: interfaces réseau SQL, erreur: 26 - Erreur lors de la localisation du serveur/de l’instance spécifiée)

Erreur source:  

Une exception non gérée a été générée lors de l'exécution du fichier demande web en cours. Informations concernant l'origine et l'emplacement de l'exception peut être identifiée à l'aide de la trace de pile d'exceptions ci-dessous.

J'ai essayé beaucoup de choses, une solution que j'ai trouvée dans stackoverflow mais rien n'a fonctionné. Voici mes connectionstrings:

<connectionStrings>
  <clear/>
  <remove name="LocalSqlServer"/>
     <add name="LocalSqlServer" connectionString="Data Source=MSSQL2008-1;Initial Catalog=agency;
        Integrated Security=False;User ID=adis_agency;Password=niarda2012;Connect Timeout=180;Encrypt=False;
        Packet Size=4096" providerName="System.Data.SqlClient" />
     <add name="AgencyConn" connectionString="Data Source=MSSQL2008-1;Initial Catalog=agency;
        Integrated Security=False;User ID=adis_agency;Password=niarda2012;Connect Timeout=180;Encrypt=False;
        Packet Size=4096" providerName="System.Data.SqlClient"/>
</connectionStrings>

Vous trouverez également ci-dessous la section web.config du responsable des rôles et des membres:

<membership defaultProvider="AuthProvider">
  <providers>
    <clear/>
      <add name="AuthProvider" type="AuthenticationProvider" applicationName="~/Reserved/" connectionStringName="AgencyConn"/>
  </providers>
</membership>
<roleManager enabled="true" defaultProvider="MyRoleProvider">
  <providers>
    <clear/>
      <add name="MyRoleProvider" type="RoleAccessProvider" connectionStringName="AgencyConn"/>
  </providers>
</roleManager>

S'il vous plaît quelqu'un peut-il aider à comprendre ce qui ne va pas?

26
ivi.hamiti

Si vous vous connectez de la machine Windows A à la machine Windows B (serveur sur lequel SQL Server est installé) et obtenez cette erreur, vous devez procéder comme suit:

Sur la machine B:

1.) activer le service Windows appelé "Navigateur SQL Server" et démarrer le service

2.) dans le pare-feu Windows, activez le port entrant UDP 1434 (si SQL Server Management Studio sur la machine A se connecte ou un programme sur la machine A se connecte)

3.) dans le pare-feu Windows, activez le port entrant TCP 1433 (en cas de connexion Telnet)

4.) dans le Gestionnaire de configuration SQL Server, activez le protocole TCP/IP pour le port 1433

enter image description here

38
MacGyver

Pour moi, le problème était que l'enregistrement DNS était erroné ... 

Ce qui suit, qui s’est avéré très utile, est en grande partie tiré de cet article de blog .

Ce message d'erreur est en fait assez spécifique et la solution assez simple.

Vous obtenez ce message d'erreur uniquement si vous essayez de vous connecter à une instance nommée SQL Server. Pour une instance par défaut, cela ne se voit jamais car, même si nous échouons à ce stade (erreur de localisation du serveur/instance spécifiée), nous continuerons d'essayer de nous connecter en utilisant les valeurs par défaut, par exemple le port TCP 1433, le nom de canal par défaut. pour les pipes nommées.

Chaque fois qu'un client établit une connexion à une instance nommée SQL Server, nous envoyons un paquet SSRP UDP au port UDP de la machine serveur 1434. Nous avons besoin de cette étape pour connaître les informations de configuration de l'instance SQL, par exemple, protocoles activés, TCP port, nom du tuyau, etc. Sans ces informations, le client ne sait pas comment se connecter et échoue avec ce message d'erreur.

Dans un mot, la raison pour laquelle nous recevons ce message d'erreur est que la pile du client n'a pas pu recevoir le paquet UDP de réponse SSRP à partir du navigateur SQL. Afin d'isoler le problème exact, suivez ces étapes:

  1. Assurez-vous que le nom de votre serveur est correct, par exemple aucune frappe sur le nom.

  2. Assurez-vous que votre nom d'instance est correct et qu'il existe une telle instance sur votre ordinateur cible. (Sachez que certaines applications convertissent\en).

  3. Assurez-vous que la machine du serveur est accessible. Par exemple, le DNS peut être résolu correctement, vous êtes en mesure d’envoyer une requête ping au serveur (pas toujours vrai).

  4. Assurez-vous que le service SQL Browser est en cours d'exécution sur le serveur.

  5. Si le pare-feu est activé sur le serveur, vous devez exclure sqlbrowser.exe et/ou le port UDP 1434.

Il existe un cas où vous pouvez toujours échouer après avoir vérifié les étapes 1 à 4. Cela peut également se produire lorsque:

  1. votre serveur est une instance nommée sur un cluster ou sur une machine multi-hébergée
  2. votre client est une machine Vista avec pare-feu activé. 

Un outil qui pourrait s'avérer utile (cela m’a été utile) est PortQry . Si cette commande renvoie des informations et qu'elle contient votre instance cible, vous pouvez alors exclure les possibilités 4) et 5) ci-dessus, ce qui signifie qu'un navigateur SQL est en cours d'exécution et que votre pare-feu ne bloque pas les paquets UDP du navigateur SQL. Dans ce cas, vous pouvez vérifier d'autres problèmes possibles tels qu'une chaîne de connexion incorrecte.

Pour terminer, le message d'erreur concernant le même problème lorsque vous utilisez SNAC est le suivant: [Client natif SQL] Interfaces réseau SQL: Erreur lors de la localisation du serveur/de l'instance spécifiée [xFFFFFFFF].

Microsoft a récemment publié une procédure guidée qui peut servir de guichet unique pour résoudre la plupart des problèmes de connectivité avec SQL Server: Résolution des erreurs de connectivité avec SQL Server

15
Paul Zahra

La réponse est dans le message d'erreur lui-même:

Error Locating Server/Instance Specified

Fondamentalement, vous avez le mauvais serveur\instance dans la chaîne de connexion, c’est-à-dire ce bit:

Data Source=MSSQL2008-1

est incorrect et ne pointe pas vers le serveur, ou le nom de serveur ne se résout pas en une adresse IP. Deux autres possibilités: (1) le service de navigateur SQL sur la machine exécutant SQL Server n'est pas en cours d'exécution ou (2) le pare-feu Windows (ou un autre pare-feu) sur la boîte SQL refuse les connexions entrantes.

En fin de compte, si le nom de serveur est correct, il se transforme en un problème de réseau et vous devez savoir pourquoi le client ne peut pas se connecter au serveur (ce qui sera probablement un problème de réseau de base plutôt qu'un problème de configuration de SQL Server) .

7
Chris J

Je rencontrais le même problème dans mon application ASP.NET MVC 4. 

La façon dont je l'ai résolu était dans la DatabaseContext. En transmettant le nom de la chaîne de connexion que je voulais utiliser via le constructeur de base.

public class DatabaseContext : DbContext
{ 
    public DatabaseContext()
        : base("DefaultConnection") // <-- this is what i added.
    {
    }

    public DbSet<SomeModel> SomeModels { get; set; }
}
7
Kristian Nissen

Changez votre.\SQLEXPRESS, et ajoutez votre nom SQL express uniquement et cela fonctionne pour moi

 <add name="BlogDbContext" connectionString="data source=your name here; initial catalog=CodeFirstDemo; integrated security=True" providerName="System.Data.SqlClient"/>

Aller à la fenêtre + R et tapez services.msc et appuyez sur Entrée.

Puis démarrez le serveur SQL manuellement s'il n'est pas démarré automatiquement.

Ensuite, vous essayez de vous connecter, cela doit fonctionner.

2
Venkatesh K

J'ai eu la même erreur et j'ai démarré le service SQL Server Express et cela a fonctionné. J'espère que cela t'aides.

2
Hưng Ngô

j'ai eu ce problème, et corrigé. le problème semblait être ceci:

faux:

<add key="aaa" value="server=[abc\SQL2K8];database=bbb;uid=ccc;password=ddd;" />

droite

<add key="aaa" value="server=abc\SQL2K8;database=bbb;uid=ccc;password=ddd;" />
1
Ash

Dans mon cas, j'ai cherché des services. Puis trouvé un service appelé "SQL Server (SQLEXPRESS). Puis cliquez avec le bouton droit sur celui-ci. Sélectionnez propriétés. Puis cliquez sur Démarrer. C'est tout. Résolu le problème.

1

Nous avons eu le même problème récemment. Nous avons découvert que le code recherche la chaîne de connexion nommée "LocalSqlServer" dans le fichier machine.confg. Nous avons ajouté cette ligne et cela fonctionne bien.

1
NathanPillai

Le problème est dû au fait que le DNS n'a pas réussi à résoudre le nom d'hôte. Essayez d'utiliser l'adresse IP au lieu du "nom de l'ordinateur". 

1
user5362299

Dans mon cas, le nom de connectionString dans le fichier web.config était mal orthographié. Ceci est le nom du contexte de base de données utilisé par Entity Framework. J'imagine que c'est l'erreur que vous obtenez lorsque EF ne peut pas faire correspondre le nom connectionString au contexte. 

1
RMuesi

Ce problème m’a pris environ un jour, sur l’un de mes projets ASP.NET MVC, heureusement j’ai eu le problème sur ma machine et non dans un environnement de production. C’est pourquoi, en comparant web.config, il est clair que l’erreur a disparu ... un véritable défi connectez l'erreur 26 SQL Server à ce problème

0
David

Même problème. Dans mon cas, j'ai résolu de définir le projet comme "Projet de démarrage".

0
Antonio Santise