Изменить пароль с истекшим сроком без "Пароля с истекшим сроком действия"
Я регистрирую свое приложение, используя учетную запись входа в систему Sql Server Database. Однако, когда срок действия пароля пользователя истек, я могу только поймать сообщение об ошибке с помощью "error: 18488" и отобразить сообщение пользователю.
При входе в систему с помощью Sql Server Management Studio с учетной записью с истекшим паролем появляется диалоговое окно, требующее изменить пароль.
Есть ли способ разрешить моему приложению изменять истекший пароль с чем-то вроде инструкции T-Sql?
Ответы
Ответ 1
Я нашел решение здесь, я использовал 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");
}
}
Надеюсь, что это тоже поможет другим.:)
Ответ 2
Вы можете изменить вход пользователя с помощью ALTER LOGIN.
ALTER LOGIN [userName] WITH PASSWORD=N'StrongPassword'
Другой вариант - использовать хранимую процедуру sp_password.
sp_password [ [ @old = ] 'old_password' , ]
{ [ @new =] 'new_password' }
[ , [ @loginame = ] 'login' ]
Код С#:
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);
Ответ 3
Попробуйте использовать утилиту sqlcmd.exe.
–> sqlcmd
–> sp_password @new = "newpassword", @loginame = "sa"
–> go
–> exit
Проверьте эту ссылку:
Изменение пароля sa с помощью sqlcmd