【问题标题】:Change expired password without "Password Expired dialog box"在没有“密码过期对话框”的情况下更改过期密码
【发布时间】:2013-05-24 08:08:10
【问题描述】:

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

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

有没有办法让我的应用程序使用类似 T-Sql 语句的方式更改过期密码?

【问题讨论】:

    标签: c# .net sql-server


    【解决方案1】:

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

    希望它也对其他人有所帮助。 :)

    【讨论】:

    • 对不起,我不知道甲骨文。我正在使用.Net 和“SQL Server 2008”,所以我只从MSDN 获得了解决方案。
    【解决方案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);
    

    【讨论】:

    • 我使用了SqlConnection.ChangePassword(),因为它更适合我的情况。还是要谢谢你的帮助。 :)
    【解决方案3】:

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

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

    查看此链接:

    Changing the sa password using sqlcmd

    【讨论】:

    • 我使用了SqlConnection.ChangePassword(),因为它更适合我的情况。还是要谢谢你的帮助。 :)
    猜你喜欢
    • 1970-01-01
    • 2015-04-20
    • 1970-01-01
    • 2015-07-07
    • 2016-08-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多