Laden...

Alter Login in C# aufrufen

Erstellt von mrbob vor 11 Jahren Letzter Beitrag vor 11 Jahren 1.831 Views
M
mrbob Themenstarter:in
46 Beiträge seit 2010
vor 11 Jahren
Alter Login in C# aufrufen

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

3.511 Beiträge seit 2005
vor 11 Jahren

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)

M
mrbob Themenstarter:in
46 Beiträge seit 2010
vor 11 Jahren

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