SqlConnection.ChangePassword SqlConnection.ChangePassword SqlConnection.ChangePassword SqlConnection.ChangePassword Method

Definition

Ändert das SQL Server-Kennwort.Changes the SQL Server password.

Überlädt

ChangePassword(String, String) ChangePassword(String, String) ChangePassword(String, String) ChangePassword(String, String)

Ändert das SQL Server-Kennwort für den Benutzer, der in der Verbindungszeichenfolge zum bereitgestellten neuen Kennwort angegeben ist.Changes the SQL Server password for the user indicated in the connection string to the supplied new password.

ChangePassword(String, SqlCredential, SecureString) ChangePassword(String, SqlCredential, SecureString) ChangePassword(String, SqlCredential, SecureString) ChangePassword(String, SqlCredential, SecureString)

Ändert das SQL Server-Kennwort für den Benutzer, der im SqlCredential-Objekt angegeben wird.Changes the SQL Server password for the user indicated in the SqlCredential object.

ChangePassword(String, String) ChangePassword(String, String) ChangePassword(String, String) ChangePassword(String, String)

Ändert das SQL Server-Kennwort für den Benutzer, der in der Verbindungszeichenfolge zum bereitgestellten neuen Kennwort angegeben ist.Changes the SQL Server password for the user indicated in the connection string to the supplied new password.

public:
 static void ChangePassword(System::String ^ connectionString, System::String ^ newPassword);
public static void ChangePassword (string connectionString, string newPassword);
static member ChangePassword : string * string -> unit
Public Shared Sub ChangePassword (connectionString As String, newPassword As String)

Parameter

connectionString
String String String String

Verbindungszeichenfolge mit den notwendigen Informationen, um eine Verbindung mit dem gewünschten Server herzustellen.The connection string that contains enough information to connect to the server that you want. Die Verbindungszeichenfolge muss die Benutzer-ID und das aktuelle Kennwort enthalten.The connection string must contain the user ID and the current password.

newPassword
String String String String

Das neue anzugebende Kennwort.The new password to set. Das Kennwort muss allen auf dem Server festgelegten Sicherheitsrichtlinien für Kennwörter entsprechen, einschließlich der Mindestlänge, erforderlicher Sonderzeichen usw.This password must comply with any password security policy set on the server, including minimum length, requirements for specific characters, and so on.

Ausnahmen

Die Verbindungszeichenfolge enthält die Option, integrierte Sicherheit zu verwenden.The connection string includes the option to use integrated security.

OrOr Das newPassword ist länger als 128 Zeichen.The newPassword exceeds 128 characters.

Entweder der connectionString- oder der newPassword-Parameter ist gleich NULL.Either the connectionString or the newPassword parameter is null.

Beispiele

Im folgenden finden Sie ein einfaches Beispiel für das Ändern eines Kennworts:The following is a simple example of changing a password:

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");  
   }  
}  
  
Module Module1  
    Sub Main()  
System.Data.SqlClient.SqlConnection.ChangePassword(  
        "Data Source=a_server;Initial Catalog=a_database;UID=user;PWD=old_password",   
       "new_password")  
    End Sub  
End Module  
  

Die folgende Konsolenanwendung veranschaulicht die Probleme, die beim Ändern des Kennworts eines Benutzers aufgetreten sind, da das aktuelle Kennwort abgelaufen ist.The following console application demonstrates the issues involved in changing a user's password because the current password has expired.

using System;
using System.Data;
using System.Data.SqlClient;

class Program
{
    static void Main()
    {
        try
        {
            DemonstrateChangePassword();
        }
        catch (Exception ex)
        {
            Console.WriteLine("Error: " + ex.Message);
        }
        Console.WriteLine("Press ENTER to continue...");
        Console.ReadLine();
    }

    private static void DemonstrateChangePassword()
    {
        // Retrieve the connection string. In a production application,
        // this string should not be contained within the source code.
        string connectionString = GetConnectionString();

        using (SqlConnection cnn = new SqlConnection())
        {
            for (int i = 0; i <= 1; i++)
            {
                // Run this loop at most two times. If the first attempt fails, 
                // the code checks the Number property of the SqlException object.
                // If that contains the special values 18487 or 18488, the code 
                // attempts to set the user's password to a new value. 
                // Assuming this succeeds, the second pass through 
                // successfully opens the connection.
                // If not, the exception handler catches the exception.
                try
                {
                    cnn.ConnectionString = connectionString;
                    cnn.Open();
                    // Once this succeeds, just get out of the loop.
                    // No need to try again if the connection is already open.
                    break;
                }
                catch (SqlException ex)
                {
                    if (i == 0 && ((ex.Number == 18487) || (ex.Number == 18488)))
                    {
                        // You must reset the password. 
                        connectionString =
                            ModifyConnectionString(connectionString, 
                            GetNewPassword());

                    }
                    else
                        // Bubble all other SqlException occurrences
                        // back up to the caller.
                        throw;
                }
            }
            SqlCommand cmd = new SqlCommand(
                "SELECT ProductID, Name FROM Product", cnn);
            // Use the connection and command here...
        }
    }

    private static string ModifyConnectionString(
        string connectionString, string NewPassword)
    {

        // Use the SqlConnectionStringBuilder class to modify the
        // password portion of the connection string. 
        SqlConnectionStringBuilder builder =
            new SqlConnectionStringBuilder(connectionString);
        builder.Password = NewPassword;
        return builder.ConnectionString;
    }

    private static string GetNewPassword()
    {
        // In a real application, you might display a modal
        // dialog box to retrieve the new password. The concepts
        // are the same as for this simple console application, however.
        Console.Write("Your password must be reset. Enter a new password: ");
        return Console.ReadLine();
    }

    private static string GetConnectionString()
    {
        // For this demonstration, the connection string must
        // contain both user and password information. In your own
        // application, you might want to retrieve this setting
        // from a config file, or from some other source.

        // In a production application, you would want to 
        // display a modal form that could gather user and password
        // information.
        SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder(
            "Data Source=(local);Initial Catalog=AdventureWorks");

        Console.Write("Enter your user id: ");
        builder.UserID = Console.ReadLine();
        Console.Write("Enter your password: ");
        builder.Password = Console.ReadLine();

        return builder.ConnectionString;
    }
}
Option Explicit On
Option Strict On

Imports System.Data
Imports System.Data.SqlClient

Module Module1
    Sub Main()
        Try
            DemonstrateChangePassword()
        Catch ex As Exception
            Console.WriteLine("Error: " & ex.Message)
        End Try
        Console.WriteLine("Press ENTER to continue...")
        Console.ReadLine()
    End Sub

    Private Sub DemonstrateChangePassword()
        Dim connectionString As String = GetConnectionString()
        Using cnn As New SqlConnection()
            For i As Integer = 0 To 1
                ' Run this loop at most two times. If the first attempt fails, 
                ' the code checks the Number property of the SqlException object.
                ' If that contains the special values 18487 or 18488, the code 
                ' attempts to set the user's password to a new value. 
                ' Assuming this succeeds, the second pass through 
                ' successfully opens the connection.
                ' If not, the exception handler catches the exception.
                Try
                    cnn.ConnectionString = connectionString
                    cnn.Open()
                    ' Once this succeeds, just get out of the loop.
                    ' No need to try again if the connection is already open.
                    Exit For

                Catch ex As SqlException _
                 When (i = 0 And (ex.Number = 18487 Or ex.Number = 18488))
                    ' You must reset the password.
                    connectionString = ModifyConnectionString( _
                     connectionString, GetNewPassword())

                Catch ex As SqlException
                    ' Bubble all other SqlException occurrences
                    ' back up to the caller.
                    Throw
                End Try
            Next
            Dim cmd As New SqlCommand("SELECT ProductID, Name FROM Product", cnn)
            ' Use the connection and command here...
        End Using
    End Sub

    Private Function ModifyConnectionString( _
     ByVal connectionString As String, ByVal NewPassword As String) As String

        ' Use the SqlConnectionStringBuilder class to modify the
        ' password portion of the connection string. 
        Dim builder As New SqlConnectionStringBuilder(connectionString)
        builder.Password = NewPassword
        Return builder.ConnectionString
    End Function

    Private Function GetNewPassword() As String
        ' In a real application, you might display a modal
        ' dialog box to retrieve the new password. The concepts
        ' are the same as for this simple console application, however.
        Console.Write("Your password must be reset. Enter a new password: ")
        Return Console.ReadLine()
    End Function

    Private Function GetConnectionString() As String
        ' For this demonstration, the connection string must
        ' contain both user and password information. In your own
        ' application, you might want to retrieve this setting
        ' from a config file, or from some other source.

        ' In a production application, you would want to 
        ' display a modal form that could gather user and password
        ' information.
        Dim builder As New SqlConnectionStringBuilder( _
         "Data Source=(local);Initial Catalog=AdventureWorks")

        Console.Write("Enter your user id: ")
        builder.UserID = Console.ReadLine()
        Console.Write("Enter your password: ")
        builder.Password = Console.ReadLine()

        Return builder.ConnectionString
    End Function
End Module

Hinweise

Wenn Sie SQL Server unter Windows Server verwenden, können Entwickler die Funktionen nutzen, die es der Client Anwendung ermöglichen, das aktuelle und ein neues Kennwort zur Verfügung zu stellen, um das vorhandene Kennwort zu ändern.When you are using SQL Server on Windows Server, developers can take advantage of functionality that lets the client application supply both the current and a new password in order to change the existing password. Anwendungen können Funktionen implementieren, wie z. b. den Benutzer zur Eingabe eines neuen Kennworts während der ersten Anmeldung auffordern, wenn die alte Anmeldung abgelaufen ist. dieser Vorgang kann ohne Eingreifen des Administrators abgeschlossen werden.Applications can implement functionality such as prompting the user for a new password during initial login if the old one has expired, and this operation can be completed without administrator intervention.

Die ChangePassword -Methode ändert das SQL Server Kennwort für den Benutzer, der connectionString im angegebenen-Parameter angegeben ist, newPassword in den im-Parameter angegebenen Wert.The ChangePassword method changes the SQL Server password for the user indicated in the supplied connectionString parameter to the value supplied in the newPassword parameter. Wenn die Verbindungs Zeichenfolge die Option für die integrierte Sicherheit enthält (d. h. "Integrated Security = true" oder die entsprechende), wird eine Ausnahme ausgelöst.If the connection string includes the option for integrated security (that is, "Integrated Security=True" or the equivalent), an exception is thrown.

Um festzustellen, ob das Kennwort abgelaufen ist Open , löst der SqlExceptionAufruf der-Methode eine aus.To determine that the password has expired, calling the Open method raises a SqlException. Um anzugeben, dass das Kennwort, das in der Verbindungs Zeichenfolge enthalten ist, zurück Number gesetzt werden muss, enthält die-Eigenschaft für die Ausnahme den Statuswert 18487 oder 18488.In order to indicate that the password that is contained within the connection string must be reset, the Number property for the exception contains the status value 18487 or 18488. Der erste Wert (18487) gibt an, dass das Kennwort abgelaufen ist und der zweite Wert (18488) angibt, dass das Kennwort vor der Anmeldung zurückgesetzt werden muss.The first value (18487) indicates that the password has expired and the second (18488) indicates that the password must be reset before logging in.

Diese Methode öffnet eine eigene Verbindung mit dem Server, fordert die Kenn Wort Änderung an und schließt die Verbindung, sobald Sie abgeschlossen ist.This method opens its own connection to the server, requests the password change, and closes the connection as soon as it has completed. Diese Verbindung wird nicht von der SQL Server Verbindungspool abgerufen oder an diesen zurückgegeben.This connection is not retrieved from, nor returned to, the SQL Server connection pool.

Siehe auch

ChangePassword(String, SqlCredential, SecureString) ChangePassword(String, SqlCredential, SecureString) ChangePassword(String, SqlCredential, SecureString) ChangePassword(String, SqlCredential, SecureString)

Ändert das SQL Server-Kennwort für den Benutzer, der im SqlCredential-Objekt angegeben wird.Changes the SQL Server password for the user indicated in the SqlCredential object.

public:
 static void ChangePassword(System::String ^ connectionString, System::Data::SqlClient::SqlCredential ^ credential, System::Security::SecureString ^ newSecurePassword);
public static void ChangePassword (string connectionString, System.Data.SqlClient.SqlCredential credential, System.Security.SecureString newSecurePassword);
static member ChangePassword : string * System.Data.SqlClient.SqlCredential * System.Security.SecureString -> unit
Public Shared Sub ChangePassword (connectionString As String, credential As SqlCredential, newSecurePassword As SecureString)

Parameter

connectionString
String String String String

Verbindungszeichenfolge mit den notwendigen Informationen, um eine Verbindung mit dem Server herzustellen.The connection string that contains enough information to connect to a server. Die Verbindungszeichenfolge darf keines der folgenden Schlüsselwörter für Verbindungszeichenfolgen enthalten: Integrated Security = true, UserId oder Password oder ContextConnection = true.The connection string should not use any of the following connection string keywords: Integrated Security = true, UserId, or Password; or ContextConnection = true.

newPassword
SecureString SecureString SecureString SecureString

Das neue Kennwort newPasswordThe new password.newPassword muss schreibgeschützt sein.must be read only. Das Kennwort muss auch allen auf dem Server festgelegten Sicherheitsrichtlinien für Kennwörter entsprechen, (zum Beispiel der Mindestlänge und erforderlicher Sonderzeichen).The password must also comply with any password security policy set on the server (for example, minimum length and requirements for specific characters).

Ausnahmen

Die Verbindungszeichenfolge enthält jede Kombination von UserId, Password oder Integrated Security=true.The connection string contains any combination of UserId, Password, or Integrated Security=true.

- oder --or- Die Verbindungszeichenfolge enthält Context Connection=true.The connection string contains Context Connection=true.

- oder --or-

newSecurePassword (oder newPassword) ist länger als 128 Zeichen.newSecurePassword (or newPassword) is greater than 128 characters.

- oder --or-

newSecurePassword (oder newPassword) ist nicht schreibgeschützt.newSecurePassword (or newPassword) is not read only.

- oder --or-

newSecurePassword (oder newPassword) ist eine leere Zeichenfolge.newSecurePassword (or newPassword) is an empty string.

Einer der Parameter (connectionString, credential oder newSecurePassword) ist null.One of the parameters (connectionString, credential, or newSecurePassword) is null.

Siehe auch

Gilt für: