Ich habe eine einfache Testanwendung in C # (4.5) geschrieben, die nur eine Verbindung zu einer Datenbank herstellt und eine Meldung anzeigt. (Grundsätzlich nur zum Testen der Bereitstellung und der DB-Verbindung.) Auf meiner lokalen Workstation funktioniert alles einwandfrei. Ich habe SQL Express 2012 installiert, als aktueller Benutzer verbinden (integrierte Sicherheit), keine Probleme.
Bei der Bereitstellung unter Windows Server 2008 kann die Anwendung jedoch keine Verbindung zur Datenbank herstellen. Es wird weiterhin ein Anmeldefehler angezeigt.
Auf dem Server habe ich die gleiche Installation für SQL Express 2012 durchgeführt. Beim Ausführen der Konsolenanwendung bin ich als Administrator angemeldet. Ich habe sogar versucht, die Authentifizierung im gemischten Modus zu aktivieren, einen Benutzer zu erstellen und eine Verbindung als dieser Benutzer herzustellen. Ich kann in SQL Management Studio eine Verbindung herstellen, aber die Anwendung erhält immer den Fehler "Anmeldung fehlgeschlagen".
Gibt es eine versteckte Sicherheitseinstellung in Windows Server 2008, die ich ändern muss, damit eine .NET-Anwendung eine Verbindung zu einem SQL-Server herstellen kann? Was kann dieses Verhalten verursachen, wenn ich mich über SSMS, aber nicht über eine Anwendung in die Datenbank einloggen kann?
Error:
System.Data.SqlClient.SqlException (0x80131904): Die vom Login angeforderte Datenbank "TestDatabase" kann nicht geöffnet werden. Die Anmeldung ist fehlgeschlagen. Anmeldung für Benutzer 'sa' fehlgeschlagen.
Dies ist natürlich die Version des Fehlers, als ich versuchte, eine Verbindung herzustellen sa
als eine Art letzter Versuch zum Testen. Der gleiche Fehler passiert für TestUser
(ein SQL-Benutzer, den ich dafür erstellt habe) sowie PERSONALSERVER\Administrator
(Der aktuell angemeldete Benutzer, der die Anwendung ausführt.)
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
Antworten:
Erstens habe ich noch nie gesehen, dass eine SQL Express-Instanz das Jahr verwendet. Normalerweise ist es immer localhost \ SqlExpress
Stellen Sie in Configuration Manager sicher, dass TCP / IP und Named Pipes aktiviert sind.
Versuchen Sie in der Systemsteuerung, eine SQL-Verbindung mit dem SQL Server-Treiber herzustellen (unter Verwaltung) - & gt; Datenquellen wie diese testen nur eine lokale Verbindung mit sehr wenigen Variablen (z. B. Ihren Code (der sicher perfekt geschrieben ist :))
Haben Sie auch 2 Stellen, an denen Sie auf Ihre Verbindungszeichenfolge verweisen (ich habe dies getan)? Es wurde in meiner app.config-Datei und als Zeichenfolge in meinem Code (oder sogar als Ressourcenzeichenfolge) gespeichert.
Stellen Sie eine Verbindung über die IP-Adresse statt über den Computernamen her (dies bedeutet, dass Sie auch Ihre Verbindungszeichenfolge aktualisieren - Einzelheiten dazu finden Sie unten in diesem Beitrag).
Zuletzt aktualisieren Sie Ihre Verbindungszeichenfolge auf
oder probiere es mit:
Ich gehe davon aus, dass der Benutzer über effiziente Rechte an der betreffenden Datenbank verfügt. :)
Stellen Sie sicher, dass die SQL-Ports (normalerweise 1433 und 1434) geöffnet sind.
Melden Sie sich mit dem Benutzernamen / Kennwort bei SSMS an, um sicherzustellen, dass sie über Berechtigungen verfügen.
www.ConnectionStrings.com - Tolle Ressource für Verbindungszeichenfolgen! :)
quelle
sqlexpress2012
während der Installation.