15

Sql Server データベースのログオン アカウントを使用してアプリケーションにログオンしています。ただし、ユーザーのパスワードの有効期限が切れている場合、「error:18488」を使用してエラー メッセージをキャッチし、ユーザーにメッセージを表示することしかできません。

パスワードの有効期限が切れたアカウントで Sql Server Management Studio を使用してログインすると、パスワードの変更を求めるダイアログ ボックスが表示されます。

アプリケーションが T-Sql ステートメントのようなもので期限切れのパスワードを変更できるようにする方法はありますか?

4

3 に答える 3

8

ここで解決策を見つけました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");
    }
}

それが他の人にも役立つことを願っています。:)

于 2013-05-27T07:31:32.080 に答える
2

ALTER LOGINを使用してユーザー ログインを変更できます。

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

もう 1 つのオプションは、ストアド プロシージャ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);
于 2013-05-24T08:20:35.080 に答える