c# - spécifiés - sql server erreur 26




Erreur de connexion IIS/SQL Server (6)

Je fais un exemple de code et je me suis retrouvé coincé dans un comportement vraiment étrange, j'essaye de me connecter à un SQL Server en utilisant cette chaîne de connexion

"Data Source=" + ServerName + "." + DomainName  + ";Initial Catalog="+DBName+";Integrated Security = false;Persist Security Info=false;User ID=sa;Password=" & Mypassword & ";Connection Timeout=90"

Apparemment, je n'utilise pas l'authentification intégrée de Windows ou (SSPI), lorsque j'utilise cette application Web, j'obtiens cette erreur:

Une erreur liée au réseau ou à une instance spécifique s'est produite lors de l'établissement d'une connexion à SQL Server. Le serveur est introuvable ou inaccessible. Vérifiez que le nom de l'instance est correct et que SQL Server est configuré pour autoriser les connexions distantes. (fournisseur: fournisseur de canaux nommés, erreur: 40 - Impossible d'ouvrir une connexion à SQL Server)

Juste pour noter que j'ai créé une application .Net qui utilise la même chaîne de connexion et s'exécute à partir de l'ordinateur sur lequel réside IIS et cela fonctionne correctement.

Voici les étapes que j'ai effectuées:

  1. J'ai vérifié la configuration du client SQL, je l'ai ouverte et activé le protocole TCP et les canaux nommés.

  2. J'ai effectué une usurpation d'identité sur IIS et utilisé l'authentification Windows et je me suis assuré que l'IIS fonctionne avec les mêmes informations d'identification que les miennes.

  3. J'ai utilisé Wireshark pour voir wut est la différence entre les deux connexions et je ne pouvais pas comprendre la sortie mais il semble que depuis l'IIS, il essaie toujours d'utiliser l'authentification Windows bien que j'ai clairement fait la chaîne de sorte qu'il n'utilise pas Windows authentification wut se produit est-ce une négociation au début de la connexion qui semble la même à la fois l'application "not_defined_in_RFC4178 @ please_ignore" et puis IIS va toujours à NTLMSSP notant que mon utilisateur n'a pas accès à la base de données et mot de passe afin que la négociation échoue avec IIS alors qu'il réussit normalement depuis l'application.

Ma question est comment puis-je résoudre ce problème, je suppose en quelque sorte qu'il existe une configuration qui exige que tout client SQL de IIS utilise l'authentification Windows, mais je ne peux pas savoir où et comment le désactiver

Je note que je n'utilise pas la configuration web.config pour la chaîne de connexion SQL Server et que ce problème se produit avec IIS7.


Laissez-nous vérifier les étapes pour résoudre cette erreur.

1) SQL Server doit être opérationnel. 2) Activer TCP / IP dans la configuration de SQL Server 3) Ouvrir le port dans le pare-feu Windows 4) Activer la connexion à distance 5) Activer le service SQL Server Browser 6) Créer une exception à sqlbrowser.exe dans Firewall 7) Recréer un alias

Source ici

J'espère que cela aide


Mis à part ce que les autres ont indiqué, la seule autre fois où je me souviens du message d'erreur avec la référence "Named Pipes" était basée sur la configuration de SQL-Server.

Pour confirmer, je suis allé dans ma version de SQL Server Configuration Manager. Ensuite, nous avons examiné la "Configuration de SQL Native Client 11.0" (au cas où, à la fois pour 32 bits et 64 bits) et ouverte pour afficher "Protocoles clients". Dans ce cadre, il affiche des options pour la mémoire partagée, TCP / IP et les canaux nommés. Assurez-vous que votre protocole "Named Pipes" est activé.


Vérifiez les valeurs de ServerName, DomainName, DBName & MyPassword. Sont-ils corrects? Comment ils peuplent?


Voici les premières choses que je vérifierais:

  1. Vérifier que l'utilisateur du pool d'applications dispose des droits d'accès aux ressources réseau

    • Comme vous avez déclaré que cela fonctionne lorsque vous êtes connecté à la machine, essayez de remplacer l'utilisateur du pool d'applications par l'utilisateur avec lequel vous vous connectez à la machine.
  2. Vérifiez si l'emprunt d'identité est activé dans votre fichier web.config. Si vous le faites, assurez-vous que l'utilisateur peut accéder aux ressources du réseau.

  3. Essayez de changer la chaîne de connexion pour utiliser une adresse IP (en tant que test). Si cela résout le problème, c'est peut-être une sorte de problème de DNS.

    • Assurez-vous d'inclure un 1433 à la fin de l'adresse IP
    • Définissez la Network Library=DBMSSOCN dans votre chaîne de connexion. (Voir cet article sur ConnectionStrings.com pour plus d'informations.)

peut être que le serveur SQL n'a pas été reconnu par le système client

parce que l'erreur est survenue à cause du réseau de serveur SQL non disponible et peut aussi être une erreur pour une panne de réseau


Vérifiez d'abord ceci:

Assurez-vous que SQL Server accepte les connexions à distance

Instance SQL Server -> Propriétés -> Connexions -> Autoriser les connexions à jour.

en suivant cette étape en deuxième:

Essayez de configurer une connexion dans VS avec le volet Explorateur de serveur:

1) Ouvrez l'explorateur de serveur.

2) Cliquez avec le bouton droit sur "Connexions de données" et sélectionnez "Ajouter une connexion"

3) Dans la boîte de dialogue qui suit, sélectionnez votre DataSource et votre base de données, spécifiez les informations de sécurité et cliquez sur le bouton "Tester la connexion".

4) Lorsque la connexion fonctionne, appuyez sur "OK"

5) mettez votre base de données en surbrillance dans le volet Explorateur de serveurs et examinez le volet Propriétés. Un exemple de travail de la chaîne de connexion sera affiché, que vous pouvez copier et coller dans votre application ou votre fichier de configuration.





iis