如何在使用MUST_CHANGE选项创建的SQL Server中更改登录密码

本文关键字:Server SQL 密码 登录 创建 选项 MUST CHANGE | 更新日期: 2023-09-27 18:14:26

我正在用c#编写一个Windows窗体应用程序,其中用户必须连接到SQL Server数据库。潜在用户接收随机构建客户策略强制要求用户更改密码(SQL Server - option MUST_CHANGE)。

我有困难提供一个功能,允许用户在他们第一次尝试登录时更改给定的密码:每次尝试使用所提供的凭据连接到SQL Server错误号为18488的SqlException,说明用户必须更改密码——这正是我想要做的。

我试过使用:

  1. ALTER LOGIN语句作为SqlCommand

    ALTER LOGIN 'someLogin' WITH PASSWORD = 'newPassword', OLD_PASSWORD = 'oldPassword'
    
  2. a ServerConnection, ServerLogin对象发出aChangePassword(oldPassword, newPassword)请求

    var serverConnection = new ServerConnection(someSQlConnection);
    serverConnection.Connect();
    var server = new Server(serverConnection);
    var login = new Login(server, 'someLogin') { LoginType = 
    LoginType.SqlLogin };
    login.ChangePassword(oldPassword, newPassword);
    

问题是已经尝试连接到SQL Server如果失败,密码更改查询甚至不会执行。谁能给点提示如何解决这个问题?

如何在使用MUST_CHANGE选项创建的SQL Server中更改登录密码

使用静态ChangePassword方法设置新密码:

System.Data.SqlClient.SqlConnection.ChangePassword(someSQlConnection, 
   "new_password");

根据文档:

这个方法打开它自己到服务器的连接,请求更改密码,并在更改密码后立即关闭连接完成。