我正在使用 Sql Server 数据库登录帐户登录我的应用程序。但是,当用户密码过期时,我只能使用“error:18488”捕获错误消息并向用户显示消息。
当我使用密码过期的帐户使用 Sql Server Management Studio 登录时,会出现一个要求我更改密码的对话框。
有没有办法让我的应用程序使用 T-Sql 语句之类的东西更改过期密码?
我正在使用 Sql Server 数据库登录帐户登录我的应用程序。但是,当用户密码过期时,我只能使用“error: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
检查此链接: