Udostępnij za pośrednictwem


Jak Wyświetlanie i modyfikowanie ustawień zabezpieczeń subskrypcji (Programowanie RMO)

Konta ustawienia zabezpieczeń (identyfikatory logowania i hasło) wymagane przez replikacja są definiowane podczas tworzenia publikacje i subskrypcje.Te ustawienia można zmienić później przy użyciu obiektów zarządzania replikacji (RMO).Klasy RMO i właściwości można użyć zależą od typu agenta i typu połączenia z serwerem.

Uwaga dotycząca zabezpieczeńUwaga dotycząca zabezpieczeń

Jeśli to możliwe, monitują użytkowników o wprowadzenie poświadczenia zabezpieczeń w czasie wykonywania.Jeśli poświadczenia muszą być przechowywane, usługi kryptograficzne dostarczonych przez Microsoft systemu Windows.NET Framework.

Aby zmienić wszystkie wystąpienia hasło przechowywane na serwerze replikacja

  1. Tworzenie połączenia do serwera replikacja przy użyciu ServerConnection klasy

  2. Utworzenie wystąpienie ReplicationServer klasy przy użyciu połączenia z kroku 1.

  3. Wywołanie ChangeReplicationServerPasswords metoda.Określić następujące parametry:

    • security_mode- ReplicationSecurityMode wartość, która określa typ uwierzytelnianie, dla którego zmieniane są wszystkie wystąpienia hasło.

    • login-którego zmieniane są wszystkie wystąpienia hasło logowania.

    • password -wartość nowego hasła.

      Uwaga dotycząca zabezpieczeńUwaga dotycząca zabezpieczeń

      Jeśli to możliwe, monitują użytkowników o wprowadzenie poświadczenia zabezpieczeń w czasie wykonywania.Jeśli poświadczenia muszą być przechowywane, usługi kryptograficzne system Windows.NET Framework.

      Ostrzeżenie

      Tylko element członkowski sysadmin stała rola serwera można wywołać tej metoda.

  4. Powtórz kroki 1-3, na każdym serwerze w topologia replikacja gdzie hasło musi zostać zaktualizowany.

Aby zmienić ustawienia zabezpieczeń dla agenta dystrybucji dla subskrypcja wypychana transakcyjnych publikacja

  1. Tworzenie połączenia do Wydawca za pomocą ServerConnection klasy

  2. Utworzenie wystąpienie TransSubscription klasy

  3. Ustaw PublicationName, DatabaseName, SubscriberName, i SubscriptionDBName właściwość subskrypcja i połączenie z kroku 1 dla zestaw ConnectionContext właściwość.

  4. Wywołanie LoadProperties metoda, aby pobrać właściwości obiektu.Jeśli ta metoda zwraca false, subskrypcja nie istnieje albo niepoprawnie zostały zdefiniowane właściwości subskrypcji w kroku 3.

  5. Ustaw jedną lub więcej z następujących właściwości zabezpieczeń na wystąpienie TransSubscription:

  6. (Opcjonalnie) Jeżeli określono wartość true dla CachePropertyChanges, call CommitPropertyChanges metoda zatwierdzanie zmian na serwerze.Jeżeli określono wartość false dla CachePropertyChanges (domyślnie), zmiany są wysyłane do serwera natychmiast.

Aby zmienić ustawienia zabezpieczeń dla agenta dystrybucji dla subskrypcja wciągana transakcyjnych publikacja

  1. Tworzenie połączenia do subskrybenta za pomocą ServerConnection klasy

  2. Utworzenie wystąpienie TransPullSubscription klasy

  3. Ustaw PublicationName, DatabaseName, PublisherName, i PublicationDBName właściwość subskrypcja i połączenie z kroku 1 dla zestaw ConnectionContext właściwość.

  4. Wywołanie LoadProperties metoda, aby pobrać właściwości obiektu.Jeśli ta metoda zwraca false, subskrypcja nie istnieje albo niepoprawnie zostały zdefiniowane właściwości subskrypcji w kroku 3.

  5. Ustaw jedną lub więcej z następujących właściwości zabezpieczeń na wystąpienie TransPullSubscription:

  6. (Opcjonalnie) Jeżeli określono wartość true dla CachePropertyChanges, call CommitPropertyChanges metoda zatwierdzanie zmian na serwerze.Jeżeli określono wartość false dla CachePropertyChanges (domyślnie), zmiany są wysyłane do serwera natychmiast.

Aby zmienić ustawienia zabezpieczeń dla agenta scalania dla subskrypcja wciągana do publikacja korespondencji seryjnej

  1. Tworzenie połączenia do subskrybenta za pomocą ServerConnection klasy

  2. Utworzenie wystąpienie MergePullSubscription klasy

  3. Ustaw PublicationName, DatabaseName, PublisherName, i PublicationDBName właściwość subskrypcja i połączenie z kroku 1 dla zestaw ConnectionContext właściwość.

  4. Wywołanie LoadProperties metoda, aby pobrać właściwości obiektu.Jeśli ta metoda zwraca false, subskrypcja nie istnieje albo niepoprawnie zostały zdefiniowane właściwości subskrypcji w kroku 3.

  5. Ustaw jedną lub więcej z następujących właściwości zabezpieczeń na wystąpienie MergePullSubscription:

  6. (Opcjonalnie) Jeżeli określono wartość true dla CachePropertyChanges, call CommitPropertyChanges metoda zatwierdzanie zmian na serwerze.Jeżeli określono wartość false dla CachePropertyChanges (domyślnie), zmiany są wysyłane do serwera natychmiast.

Aby zmienić ustawienia zabezpieczeń dla agenta scalania dla subskrypcja wypychana do publikacja korespondencji seryjnej

  1. Tworzenie połączenia do Wydawca za pomocą ServerConnection klasy

  2. Utworzenie wystąpienie MergeSubscription klasy

  3. Ustaw PublicationName, DatabaseName, SubscriberName, i SubscriptionDBName właściwość subskrypcja i połączenie z kroku 1 dla zestaw ConnectionContext właściwość.

  4. Wywołanie LoadProperties metoda, aby pobrać właściwości obiektu.Jeśli ta metoda zwraca false, subskrypcja nie istnieje albo niepoprawnie zostały zdefiniowane właściwości subskrypcji w kroku 3.

  5. Ustaw jedną lub więcej z następujących właściwości zabezpieczeń na wystąpienie MergeSubscription:

  6. (Opcjonalnie) Jeżeli określono wartość true dla CachePropertyChanges, call CommitPropertyChanges metoda zatwierdzanie zmian na serwerze.Jeżeli określono wartość false dla CachePropertyChanges (domyślnie), zmiany są wysyłane do serwera natychmiast.

Aby zmienić informacje logowania używane przez natychmiastowe subskrybenta aktualizacji podczas łączenia się transakcyjnych programu publisher

  1. Tworzenie połączenia do subskrybenta za pomocą ServerConnection klasy

  2. Utworzenie wystąpienie ReplicationDatabase klasy dla baza danych subskrypcja.Określ Name i ServerConnection z kroku 1 dla ConnectionContext.

  3. Wywołanie LoadProperties metoda, aby pobrać właściwości obiektu.Jeśli ta metoda zwraca false, właściwości bazy danych w kroku 2 zostały niepoprawnie zdefiniowany lub baza danych subskrypcja nie istnieje.

  4. Wywołanie LinkPublicationForUpdateableSubscription metoda, przekazując następujące parametry:

    • Publisher -nazwę Wydawca.

    • PublisherDB -Nazwa baza danych publikacji.

    • Publication-Nazwa publikacja, do której jest subskrybentem natychmiastowe aktualizowanie subskrybenta.

    • Distributor -nazwę dystrybutora.

    • PublisherSecurity-A PublisherConnectionSecurityContext obiekt, który określa typ zabezpieczeń trybu używanego przez natychmiastowe aktualizowanie subskrybenta podczas łączenia się z Wydawca poświadczenia logowania dla połączenia.

Przykład

W tym przykładzie sprawdza wartość podany identyfikator logowania i zmienia wszystkie hasła dla podanego identyfikatora logowania systemu Windows lub konto logowania do programu SQL Server przechowywane przez replikacja na serwerze.

         // Set the Distributor and distribution database names.
            string serverName = publisherInstance;

            ReplicationServer server;
            
            // Create a connection to the Distributor using Windows Authentication.
            ServerConnection conn = new ServerConnection(serverName);

            try
            {
                // Open the connection. 
                conn.Connect();

                server = new ReplicationServer(conn);

                // Load server properties, if it exists.
                if (server.LoadProperties())
                {
                    string[] slash = new string[1];
                    slash[1] = @"\";

                    // If the login is in the form string\string, assume we are 
                    // changing the password for a Windows login.
                    if (login.Split(slash, StringSplitOptions.None).Length == 2)
                    {
                        //Change the password for the all connections that use
                        // the Windows login. 
                        server.ChangeReplicationServerPasswords(
                                ReplicationSecurityMode.Integrated, login, password);
                    }
                    else
                    {
                        // Change the password for the all connections that use
                        // the SQL Server login. 
                        server.ChangeReplicationServerPasswords(
                                ReplicationSecurityMode.SqlStandard, login, password);
                    }
                }
                else
                {
                    throw new ApplicationException(String.Format(
                        "Properties for {0} could not be retrieved.", publisherInstance));
                }
            }
            catch (Exception ex)
            {
                // Implement the appropriate error handling here. 
                throw new ApplicationException(String.Format(
                    "An error occured when changing agent login " +
                    " credentials on {0}.",serverName), ex);
            }
            finally
            {
                conn.Disconnect();
            }
' Set the Distributor and distribution database names.
Dim serverName As String = publisherInstance

Dim server As ReplicationServer

' Create a connection to the Distributor using Windows Authentication.
Dim conn As ServerConnection = New ServerConnection(serverName)

Try
    ' Open the connection. 
    conn.Connect()

    server = New ReplicationServer(conn)

    ' Load server properties, if it exists.
    If server.LoadProperties() Then

        ' If the login is in the form string\string, assume we are 
        ' changing the password for a Windows login.
        If login.Split("\").Length = 2 Then

            ' Change the password for the all connections that use
            ' the Windows login. 
            server.ChangeReplicationServerPasswords( _
            ReplicationSecurityMode.Integrated, login, password)
        Else

            ' Change the password for the all connections that use
            ' the SQL Server login. 
            server.ChangeReplicationServerPasswords( _
            ReplicationSecurityMode.SqlStandard, login, password)
        End If
    Else
        Throw New ApplicationException(String.Format( _
         "Properties for {0} could not be retrieved.", publisherInstance))
    End If
Catch ex As Exception
    ' Implement the appropriate error handling here. 
    Throw New ApplicationException(String.Format( _
     "An error occured when changing agent login " + _
     " credentials on {0}.", serverName), ex)
Finally
    conn.Disconnect()
End Try