Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Alter Login in C# aufrufen
mrbob
myCSharp.de - Member



Dabei seit:
Beiträge: 46

Themenstarter:

Alter Login in C# aufrufen

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
Khalid
myCSharp.de - Experte

Avatar #avatar-2534.gif


Dabei seit:
Beiträge: 3.511
Herkunft: Hannover

beantworten | zitieren | melden

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)
private Nachricht | Beiträge des Benutzers
mrbob
myCSharp.de - Member



Dabei seit:
Beiträge: 46

Themenstarter:

beantworten | zitieren | melden

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
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von mrbob am .
private Nachricht | Beiträge des Benutzers