2017-09-18 22 views
0

J'essaie de changer les mots de passe des connexions au serveur SQL, mais les mots de passe ne changeront pas. C'est ce que j'ai:Modifier le mot de passe de connexion MS SQL dans ASP.NET

SqlCommand query = new SqlCommand("ALTER LOGIN @login WITH PASSWORD = '@Pwd'", con); 
query.Parameters.Add("@login", SqlDbType.NVarChar, 60).Value = login; 
query.Parameters.Add("@Pwd", SqlDbType.NVarChar, 20).Value = _newPwds[login]; 
query.Prepare(); 
query.BeginExecuteNonQuery(); 

je ne reçois aucun message d'erreur de retour de SQL Server ou le débogage (ou je ne sais pas comment les obtenir). La connexion est correcte et j'ai le droit de modifier les mots de passe sur le serveur (l'application fonctionne avec Integrated Security).

Merci pour votre aide.

+0

@mason Merci, je ne le savais pas. Je l'ai changé et maintenant je reçois "Syntaxe incorrecte près de '@login'". –

+0

Voir [cette question] (https://stackoverflow.com/questions/14858034/how-to-change-a-sql-login-password-with-variables) pour un exemple d'utilisation de paramètres avec une instruction alter login. – mason

+0

@mason Merci! Je vais tester ça jeudi, mais je pense que ça ira. Pourriez-vous ajouter ceci à votre réponse? Ensuite, je marquerais comme la bonne réponse après que je l'ai testé. –

Répondre

1

Vous utilisez une méthode asynchrone BeginExecuteNonQuery pour exécuter la requête, donc vous ne l'avez pas capturée. Étant donné que vous ne voulait probablement pas aller async, essayez d'utiliser à la place ExecuteNonQuery:

query.ExecuteNonQuery(); 

Plus vous ne pouvez pas utiliser des paramètres dans une instruction ALTER LOGIN, voir this question.