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

时间:2013-05-24 08:08:10

标签: c# .net sql-server

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

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

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

3 个答案:

答案 0 :(得分:7)

我找到了解决方案here,我使用了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");
    }
}

希望它也有助于其他人。 :)

答案 1 :(得分:2)

您可以使用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);

答案 2 :(得分:0)

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

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

检查此链接:

Changing the sa password using sqlcmd