verwendetes Datenbanksystem: MS SQL R2
Moin moin,
wenn ich versuche aus C# heraus mittels "Alter Login" das Passwort eines SQL User zu ändern bekomme ich immer folgende Meldung "System.Data.SqlClient.SqlException (0x80131904): Falsche Syntax in der Nähe von 'PASSWORD'."
Hier ist mal mein Code:
using (sqlConnection = new SqlConnection(connectionString))
{
//var sqlCommand = new SqlCommand("ALTER LOGIN [@username] WITH PASSWORD=[@password]", sqlConnection);
var sqlCommand = new SqlCommand("ALTER LOGIN [@username] WITH PASSWORD = [@password] OLD_PASSWORD = [@oldPassword]", sqlConnection);
sqlCommand.Parameters.Add("@username", SqlDbType.NVarChar);
sqlCommand.Parameters["@username"].Value = username;
sqlCommand.Parameters.Add("@password", SqlDbType.NVarChar);
sqlCommand.Parameters["@password"].Value = newPassword;
sqlCommand.Parameters.Add("@oldPassword", SqlDbType.NVarChar);
sqlCommand.Parameters["@oldPassword"].Value = oldPassword;
sqlConnection.Open();
sqlCommand.ExecuteNonQuery();
sqlConnection.Close();
}
Der Commandtext sieht wie folgt aus:
"ALTER LOGIN [@username] WITH PASSWORD = [@password] OLD_PASSWORD = [@oldPassword]".
Leider erkenne ich dabei keinen Fehler.
Noch ein Anmerkung. Ich ändere nicht den momentan angemeldeten User, sondern einen anderen SQL-User.
MFG.
Mr. Bob
Hi,
Parameter funktionieren nur bei DML Abfragen. Nicht bei DDL, DCL oder TCL. ALTER LOGIN ist ein DDL Befehl.
Die Begriffe bitte selber nachschlagen 😃
"Jedes Ding hat drei Seiten, eine positive, eine negative und eine komische." (Karl Valentin)
Moin moin,
danke Khalid. Gestern bin ich auch noch auch darauf gestoßen.
Ich habe es jetzt mit SMO gelöst.
Hier der Code:
using (sqlConnection = new SqlConnection(connectionString))
{
var serverConnection = new ServerConnection(sqlConnection);
var server = new Server(serverConnection);
var login = new Login(server, username) { LoginType = LoginType.SqlLogin };
login.ChangePassword(oldPassword, newPassword);
}
Der Code ist durch SMO an der Stelle auch bisschen kompakter geworden.
Von mir aus ist das Thema erledigt. Thread kann geschloßen werden.
Bruß
Mr. Bob