c# l'instance - Erreur de connexion IIS / SQL Server




spécifiés network (8)

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.


Answers

Vous mentionnez que SQL Server est sur une autre machine. Vous devez vous assurer que le service SQL Server Browser sur cette machine est en cours d'exécution.

Vous le trouverez dans la console de gestion Windows Services (ainsi que dans d'autres emplacements).

De plus, vous devrez vous assurer que le port UDP 1434 est ouvert dans le pare-feu.


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.)

Si vous avez tapé la chaîne de connexion exacte comme ci-dessus, veuillez vérifier la modification de la chaîne de connexion dans Around string.

La chaîne de connexion écrite ci-dessus n'est pas du tout une chaîne valide puisque la chaîne peut être concaténée avec une autre chaîne en utilisant + n'utilisant pas & en C # comme je le sais.


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.


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


Par défaut, le message d'erreur d'échec de connexion n'est rien, mais une connexion d'utilisateur client a été refusée par le serveur en raison de la non-concordance des informations d'identification de connexion. La première tâche que vous pouvez vérifier est de voir si cet utilisateur a des privilèges pertinents sur cette instance SQL Server et la base de données pertinente aussi, c'est bien. Évidemment, si les privilèges nécessaires ne sont pas définis, vous devez résoudre ce problème en accordant les privilèges appropriés pour cette connexion utilisateur.

Bien que si cet utilisateur dispose de subventions appropriées sur la base de données et le serveur si le serveur rencontre des problèmes d'informations d'identification pour ce login, il empêchera l'authentification en retour à SQL Server, le client recevra le message d'erreur suivant:

Msg 18456, Level 14, State 1, Server <ServerName>, Line 1
Login failed for user '<Name>'

Ok maintenant, quoi, en regardant le message d'erreur, vous vous sentez comme ceci est non-descriptif pour comprendre le niveau et l'état. Par défaut, l'erreur du système d'exploitation indiquera «État» comme 1, quelle que soit la nature des problèmes d'authentification de la connexion. Donc, pour étudier plus loin, vous devez également consulter le journal des erreurs de l'instance SQL Server pour plus d'informations sur la gravité et l'état de cette erreur. Vous pourriez regarder dans une entrée correspondante dans le journal comme:

2007-05-17 00:12:00.34 Logon     Error: 18456, Severity: 14, State: 8.
or

2007-05-17 00:12:00.34 Logon     Login failed for user '<user name>'.

Comme défini ci-dessus, les colonnes Gravité et Etat de l'erreur sont essentielles pour trouver la réflexion exacte de la source du problème. Sur l'erreur ci-dessus numéro 8 pour l'état indique l'échec d'authentification en raison de la non-concordance de mot de passe. Les livres en ligne font référence: Par défaut, les messages de gravité inférieure à 19 définis par l'utilisateur ne sont pas envoyés au journal des applications Microsoft Windows lorsqu'ils se produisent. Les messages de gravité inférieure à 19 définis par l'utilisateur ne déclenchent donc pas les alertes de l'Agent SQL Server.

Sung Lee, Gestionnaire de programmes dans les protocoles SQL Server (Dev.team) a décrit plus d'informations sur la description de l'état d'erreur: Les états d'erreur communs et leurs descriptions sont fournis dans le tableau suivant:

ERROR STATE       ERROR DESCRIPTION
------------------------------------------------------------------------------
2 and 5           Invalid userid
6                 Attempt to use a Windows login name with SQL Authentication
7                 Login disabled and password mismatch
8                 Password mismatch
9                 Invalid password
11 and 12         Valid login but server access failure
13                SQL Server service paused
18                Change password required


Well I'm not finished yet, what would you do in case of error:

2007-05-17 00:12:00.34 Logon     Login failed for user '<user name>'.

Vous pouvez voir qu'il n'y a pas de niveau de gravité ou d'état défini à partir du journal des erreurs de cette instance SQL Server. L'option de dépannage suivante est donc de regarder le journal de sécurité de l'Observateur d'événements [edit car la capture d'écran est manquante mais vous obtenez le

idée, regardez dans le journal des événements pour les événements intéressants].







c# asp.net sql-server-2008 iis