Die SQL-Anmeldung schlägt für die App fehl, aber nicht für SSMS

Die SQL-Anmeldung schlägt für die App fehl, aber nicht für SSMS

Ich habe eine einfache Testanwendung in C# (4.5) geschrieben, die nichts weiter tut, als eine Verbindung zu einer Datenbank herzustellen und eine Nachricht anzuzeigen. (Im Grunde nur, um die Bereitstellung und die DB-Verbindung zu testen.) Auf meiner lokalen Workstation funktioniert alles einwandfrei. Ich habe SQL Express 2012 installiert, verbinde mich als aktueller Benutzer (integrierte Sicherheit), keine Probleme.

Bei der Bereitstellung unter Windows Server 2008 kann die Anwendung jedoch keine Verbindung zur Datenbank herstellen. Es wird ständig die Fehlermeldung „Anmeldung fehlgeschlagen“ angezeigt.

Auf dem Server habe ich die gleiche Installation für SQL Express 2012 durchgeführt. Ich bin als Administrator angemeldet, wenn ich die Konsolenanwendung ausführe. Ich habe sogar versucht, die Authentifizierung im gemischten Modus einzuschalten, einen Benutzer zu erstellen und mich als dieser Benutzer anzumelden. Ich kann mich in SQL Management Studio anmelden, aber die Anwendung erhält immer eine Fehlermeldung „Anmeldung fehlgeschlagen“.

Gibt es in Windows Server 2008 versteckte Sicherheitseinstellungen, die ich ändern muss, damit eine .NET-Anwendung eine Verbindung zu einem SQL-Server herstellen kann? Was könnte die Ursache für dieses Verhalten sein, bei dem ich mich über SSMS, aber nicht über eine Anwendung bei der Datenbank anmelden kann?

Fehler:

System.Data.SqlClient.SqlException (0x80131904): Die durch die Anmeldung angeforderte Datenbank „TestDatabase“ kann nicht geöffnet werden. Die Anmeldung ist fehlgeschlagen. Die Anmeldung für Benutzer „sa“ ist fehlgeschlagen.

Natürlich ist dies die Version des Fehlers, als ich als saeine Art letzten Versuch zum Testen versucht habe, eine Verbindung herzustellen. Derselbe Fehler tritt sowohl für TestUser(einen SQL-Benutzer, den ich hierfür erstellt habe) als auch PERSONALSERVER\Administrator(den aktuell angemeldeten Benutzer, der die Anwendung ausführt) auf.

Die Verbindungszeichenfolgen, die ich ausprobiert habe, sind:

  • Data Source=localhost\sqlexpress2012;Initial Catalog=TestDatabase;Integrated Security=True
  • Data Source=localhost\sqlexpress2012;Initial Catalog=TestDatabase;User Id=TestUser;Password=testpassword

Antwort1

Stellen Sie im Konfigurationsmanager sicher, dass TCP/IP und Named Pipes aktiviert sind.

Versuchen Sie in der Systemsteuerung, eine SQL-Verbindung mit dem SQL Server-Treiber (unter „Verwaltung“) -> „Datenquellen“ herzustellen, da hierdurch nur eine lokale Verbindung mit sehr wenigen Variablen getestet wird (z. B. Ihr Code (von dem ich sicher bin, dass er perfekt geschrieben ist :))).

Gibt es außerdem zwei Stellen, an denen Sie auf Ihre Verbindungszeichenfolge verweisen (ich habe dies getan); sie wurde in meiner Datei app.config und als Zeichenfolge in meinem Code gespeichert (oder sogar als Ressourcenzeichenfolge).

Stellen Sie die Verbindung über die IP-Adresse statt über den Computernamen her (das bedeutet auch, dass Sie Ihre Verbindungszeichenfolge aktualisieren müssen – Einzelheiten dazu finden Sie unten in diesem Beitrag).

Aktualisieren Sie abschließend Ihre Verbindungszeichenfolge auf

Datenquelle=.\sqlexpress2012; Ursprünglicher Katalog=TestDatabase; Integrierte Sicherheit=SSPI; Benutzer-ID=meineDomäne\meinBenutzername; Kennwort=meinPasswort;

oder versuchen Sie es mit:

Server=.\sqlexpress2012; Datenbank=Testdatenbank; Trusted_Connection=True;

Ich gehe davon aus, dass der Benutzer über entsprechende Rechte für die betreffende Datenbank verfügt. :)

Stellen Sie sicher, dass die SQL-Ports (normalerweise 1433 und 1434) geöffnet sind.

Melden Sie sich mit Benutzername und Passwort bei SSMS an, um sicherzustellen, dass Sie über die erforderlichen Berechtigungen verfügen.

www.ConnectionStrings.com- Tolle Ressource für Verbindungszeichenfolgen! :)

verwandte Informationen