2012-04-10 6 views
1

Ich habe eine lokale Testumgebung mit IIS eingerichtet. Ich verwende die Verbindungszeichenfolge unten, um mit C# im Codehind einer ASPX-Seite zu verbinden, indem ich meine Windows-Authentifizierung verwende. Ich bekomme den Fehler, dass [PCNAME]/ASPNET-Anmeldung fehlgeschlagen ist. Warum versucht der Benutzername ASPNET, sich anzumelden, wenn ich meine Verbindungszeichenfolge angegeben habe, um meine Anmeldung zu verwenden?SQL Windows Auth

user id=[UID];password=[PASS];server=[LOCALSERVER];database=db_specialOps;Trusted_Connection=yes 
+0

Mehr als wahrscheinlich, Sie sind nicht wirklich, dass die Verbindungszeichenfolge. Wie öffnest du die Verbindung? –

+0

Mögliches Duplikat von http://StackOverflow.com/Questions/1642483/SQL-Server-connection-String-trusted-connection-true-issue –

+0

@PaulAlanTaylor Ich schaute es, und es hilft ein bisschen, aber ich bin nicht sicher, dass es mir eine klare Antwort gibt. Trotzdem danke. Es hilft, einige Bits zu klären. – steventnorris

Antwort

3

Vertrauenswürdige Authentifizierung verwendet die Anmeldeinformationen des Benutzers, der den Prozess ausführt. Wenn es als Ja angegeben wird, werden der Benutzername und das Kennwort in Ihrer Verbindungszeichenfolge ignoriert.

In diesem Fall ist das ASPNET-Benutzerkonto der Benutzer, der den Prozess ausführt. Dies ist also das Konto, das für die Verbindung mit SQL Server verwendet wird.

Überprüfung, eine andere SO-Frage behebt dieses Problem.

When using Trusted_Connection=true and SQL Server authentication, will this effect performance?

+0

Wenn Trusted_Connection nicht vorhanden ist, schlägt meine Authentifizierung für meine Windows-Authentifizierungs-UID fehl. Wenn es ist, bekomme ich den ASPNET-Fehler. Meine UID wird als sa für den gesamten Server und als dbo für die betreffende Datenbank festgelegt. – steventnorris

+1

Kann ich fragen, warum Sie nicht gerade ein SQL Server-Dienstkonto für die ausschließliche Verwendung durch Ihre Anwendung erstellen? Dies ist die Strategie, die in so ziemlich jeder App verwendet wird, die ich geschrieben habe. –

+0

Ich versuche, die Produktionsumgebung so viel wie möglich zu replizieren. Eine einfache SQL-Authentifizierung würde im Test funktionieren, aber Windows-Authentifizierung würde eine robustere Testumgebung bieten, wenn es möglich ist. – steventnorris

0

Entfernen Sie den Trusted_Connection=yes Teil der Verbindungszeichenfolge. Es teilt der SQL-Client-Bibliothek mit, dass sie mit der Windows-Authentifizierung eine Verbindung zum SQL-Server herstellen und dabei die Windows-Identität des aktuellen Prozesses angeben muss. In dem ASP.NET-Fall ist das [PCNAME]/ASPNET. Deshalb sehen Sie diese Fehlermeldung.

Wenn Sie sql auth verwenden möchten, geben Sie einfach Benutzernamen und Passwort ein - ohne den Trusted_Connection=yes Teil.

+0

Ich verwende meine Windows-Authentifizierung, nicht sql auth. Ich dachte, die Trusted_Connection war in diesem Fall erforderlich. – steventnorris

+0

Wenn Sie Windows Auth verwenden, können Sie keinen Benutzernamen und kein Kennwort in der Verbindungszeichenfolge angeben. Legen Sie stattdessen die Identität des ASP.NET-Anwendungspools fest. –

+0

Wie genau mache ich das? – steventnorris

0

Verbindungszeichenfolge für die Windows-Authentifizierung:

connectionString="Server=MyServer;Database=MyDb;Trusted_Connection=Yes" 

ODER

connectionString="Initial Catalog=MyDb;Data Source=MyServer;Integrated Security=SSPI;" 

/No Benutzer


Verbindungszeichenfolge für die SQL-Authentifizierung mit Benutzer übergeben/pass

connectionString="Server=MyServer; Database=pubs; User Id=MyUser; password= [email protected]" 
     providerName="System.Data.SqlClient" 

Auch diese Frage sehen, die Ihnen helfen könnte: Connect to SQL Server using windows authentication and specific account

+0

in Ordnung, so verstehe ich die Windows-Authentifizierung gegen das SQL-Auth-Bit. Meine Benutzer-ID wird als sql-Benutzer mit der Windows-Authentifizierung in den Bereich security/logins hinzugefügt. Wenn ich jedoch versuche, mit dem bestimmten Benutzer eine Verbindung herzustellen und meinen Benutzernamen zu übergeben, funktioniert das nicht. Diese Methode hat in der Produktion gut funktioniert. – steventnorris