更改过期密码而不使用“密码已过期”对话框

我正在使用Sql Server数据库登录帐户登录我的应用程序。 但是,当用户的密码过期时,我只能使用“错误:18488”捕获错误消息并向用户显示消息。

当我使用密码过期的帐户登录Sql Server Management Studio时,会出现一个需要我更改密码的对话框。

有没有办法允许我的应用程序用T-Sql语句更改过期的密码?

我在这里找到了解决方案,我使用了SqlConnection.ChangePassword()

这是代码:

 class Program { static void Main(string[] args) { System.Data.SqlClient.SqlConnection.ChangePassword( "Data Source=a_server;Initial Catalog=a_database;UID=user;PWD=old_password", "new_password"); } } 

希望它也能帮助别人。 🙂

您可以使用ALTER LOGIN更改用户登录。

 ALTER LOGIN [userName] WITH PASSWORD=N'StrongPassword' 

另一种选择是使用存储过程sp_password 。

 sp_password [ [ @old = ] 'old_password' , ] { [ @new =] 'new_password' } [ , [ @loginame = ] 'login' ] 

C#代码:

 private readonly SqlConnection m_oConn = new SqlConnection("ConnectionString"); private readonly SqlCommand m_oCmd; m_oCmd = new SqlCommand("sp_password", m_oConn) { CommandType = CommandType.StoredProcedure }; m_oCmd.Parameters.AddWithValue("@old", null); m_oCmd.Parameters.AddWithValue("@new", "newpassword"); m_oCmd.Parameters.AddWithValue("@loginame", "username"); var da = new SqlDataAdapter { SelectCommand = m_oCmd }; var ds = new DataSet(); da.Fill(ds); 

尝试使用sqlcmd.exe实用程序。

 –> sqlcmd –> sp_password @new = “newpassword”, @loginame = “sa” –> go –> exit 

检查此链接:

使用sqlcmd更改sa密码