2017-12-07 3 views
0

Ich habe eine Datenbank auf einem Hosting-Server, den ich versuche, eine Verbindung herzustellen mit C# SqlConnection Klasse. Ich kann mich über SQL Server Management Studio mit SQL Server-Authentifizierung ohne Probleme am Server anmelden."Anmeldung fehlgeschlagen für Benutzer ...", wenn ich mich mit C# an meinem Online SQL Server anmelde?

Meine Initiation Code sieht wie folgt aus:

public static string ConnectionString { get; set; } 

public Constructor() { 
    ConnectionString = @"Data source=SQL6002.site4now.net;Initial Catalog=myDatabase;User Id=MyUserName;Password=MyPassword;"; 
} 

wo Datenbanknamen, Benutzernamen und Passwörter mit den richtigen Werten ersetzt werden. Der Verbindungscode sieht folgendermaßen aus:

using (SqlConnection con = new SqlConnection(ConnectionString)) 
{ 
    con.Open(); 
    ... 
} 

Dieser Code funktioniert, wenn ich eine lokale DB-Verbindungszeichenfolge verwende. Wenn ich jedoch die Verbindungszeichenfolge oben verwende, erhalte ich den Fehler

Ein Fehler ist aufgetreten. Anmeldung fehlgeschlagen für Benutzer 'IFC \ WINxxxx $'.

Exception: System.Data.SqlClient.SqlException
Stacktrace

bei System.Data.SqlClient.SqlInternalConnectionTds..ctor (DbConnectionPoolIdentity Identität, etc. etc.

wo x im Benutzer Name sind Zahlen. Dies ist auch nicht der Benutzername, den ich in der Verbindungszeichenfolge verwende.

Ich habe versucht, trusted_connection = true und integrierte Sicherheit = true ohne Erfolg.

Wenn ich mich über SQL Server Management Studio beim Server anmelde und Eigenschaften unter Sicherheit -> Logins -> MyUserName öffne, merke ich, dass das Passwort nicht die gleiche Länge hat wie die, mit der ich mich bei SSMS anmelde. Ich habe keine Erlaubnis, es über SSMS zu ändern, nur über den Host, sicerasp.net.

Alle Eingänge sind sehr willkommen!

+0

Der Fehler sagt Ihnen, dass er denkt, dass der Benutzer 'IFC \\ WINxxxx $' ist, nicht 'MyUserName' wie in Ihrer Verbindungszeichenfolge oben. Das sieht sehr nach einer integrierten Authentifizierung aus (d. H. Windows Auth) und nicht nach einer SQL-Anmeldung. – Yuck

+0

'Trusted_Connection = True;' und 'integrierte Sicherheit = true' - diese sagen dem Server, dass er die Windows-Authentifizierung verwenden soll, was Sie ** nicht wollen, – stuartd

+0

Stuartd: Sie benötigen Windows-Anmeldedaten für die Verbindung zwischen zwei PCs . Die beiden PC müssen sich in derselben Gruppe befinden, um eine Verbindung mit oder ohne SQL herzustellen. Wenn Sie keine Windows-Anmeldedaten verwenden, haben Sie Gastberechtigungen, und Sie müssen dann Gastzugriff auf die Datenbank zulassen. – jdweng

Antwort

0

Danke für die Kommentare. Ich zog die Anmeldeinformationen zu einer Instanz von SqlCredentials, wie

var credentials = new SqlCredentials(userName, password); 
using (var con = new SqlConnection(ConnectionString, credentials){ 
    con.Open(); 
} 

wo Passwort ein Nur-Lese-Secure ist(). Das hat den Trick gemacht!

Verwandte Themen