Udostępnij za pośrednictwem


Jak Określ harmonogramy synchronizacji (Programowanie RMO)

Replikacja używa agenta serwera SQL do planowania zadań dla działań, które występują okresowo, takich jak migawka generacji i subskrypcja synchronizacji.Obiekty zarządzania replikacja (RMO) można używać do określania harmonogramów zadań agent replikacja programowo.

Ostrzeżenie

Podczas tworzenia subskrypcja i określ wartość false dla CreateSyncAgentByDefault (zachowanie domyślne dla ściągać subskrypcje) zadanie agenta nie jest tworzony i planowania właściwości są ignorowane.W takim przypadek należy ustalić harmonogram synchronizacji przez aplikację.Aby uzyskać więcej informacji, zobacz Jak Tworzenie subskrypcji ściąganej (Programowanie RMO) i Jak Utwórz subskrypcję wypychaną (Programowanie RMO).

Aby zdefiniować harmonogram agent replikacja podczas tworzenia subskrypcja wypychana transakcyjnych publikacja

  1. Utworzenie wystąpienie TransSubscription klasy tworzenia subskrypcja.Aby uzyskać więcej informacji, zobacz Jak Utwórz subskrypcję wypychaną (Programowanie RMO).

  2. Zanim zadzwonisz do Create, zestaw jeden lub więcej z następujących pól z AgentSchedule właściwość:

    • FrequencyType-Typ częstotliwości (na przykład dzienny lub tygodniowy) używane podczas planowania agenta.

    • FrequencyInterval-dzień tygodnia, wykonywana przez agenta.

    • FrequencyRelativeInterval-tygodnia danego miesiąca, gdy agent zaplanowanego co miesiąc.

    • FrequencyRecurrenceFactor-Liczba jednostek typu częstotliwość występujące między synchronizacjami.

    • FrequencySubDay-Jednostka częstotliwości agent jest uruchamiany częściej niż raz dziennie.

    • FrequencySubDayInterval-Liczba jednostek częstotliwości między uruchamiane, gdy agent jest uruchamiany częściej niż raz dziennie.

    • ActiveStartTime-najwcześniejszej czas w danym dniu rozpoczęcia uruchamiania agenta.

    • ActiveEndTime-czas najpóźniej w danym dniu rozpoczęcia uruchamiania agenta.

    • ActiveStartDate-pierwszy dzień harmonogramu agenta jest aktywna.

    • ActiveEndDate-ostatni dzień obowiązywania harmonogramu agenta.

    Ostrzeżenie

    Jeśli nie określisz jednej z tych właściwości, wartością domyślną jest zestaw.

  3. Wywołanie Create metoda do utworzenia subskrypcja.

Aby zdefiniować harmonogram agent replikacja podczas tworzenia subskrypcja wciągana transakcyjnych publikacja

  1. Utworzenie wystąpienie TransPullSubscription klasy tworzenia subskrypcja.Aby uzyskać więcej informacji, zobacz Jak Tworzenie subskrypcji ściąganej (Programowanie RMO).

  2. Zanim zadzwonisz do Create, zestaw jeden lub więcej z następujących pól z AgentSchedule właściwość:

    • FrequencyType-Typ częstotliwości (na przykład dzienny lub tygodniowy), używany podczas planowania agenta.

    • FrequencyInterval-dzień tygodnia, wykonywana przez agenta.

    • FrequencyRelativeInterval-tygodnia danego miesiąca, w którym agent zaplanowanego co miesiąc.

    • FrequencyRecurrenceFactor-Liczba jednostek typu częstotliwość występujące między synchronizacjami.

    • FrequencySubDay-Jednostka częstotliwości agent jest uruchamiany częściej niż raz dziennie.

    • FrequencySubDayInterval-Liczba jednostek częstotliwości między uruchamiane, gdy agent jest uruchamiany częściej niż raz dziennie.

    • ActiveStartTime-najwcześniejszej czas w danym dniu rozpoczęcia uruchamiania agenta.

    • ActiveEndTime-czas najpóźniej w danym dniu rozpoczęcia uruchamiania agenta.

    • ActiveStartDate-pierwszy dzień harmonogramu agenta jest aktywna.

    • ActiveEndDate-ostatni dzień obowiązywania harmonogramu agenta.

    Ostrzeżenie

    Jeśli nie określisz jednej z tych właściwości, wartością domyślną jest zestaw.

  3. Wywołanie Create metoda do utworzenia subskrypcja.

Aby zdefiniować harmonogram agent replikacja podczas tworzenia subskrypcja wciągana do publikacja korespondencji seryjnej

  1. Utworzenie wystąpienie MergePullSubscription klasy tworzenia subskrypcja.Aby uzyskać więcej informacji, zobacz Jak Tworzenie subskrypcji ściąganej (Programowanie RMO).

  2. Zanim zadzwonisz do Create, zestaw jeden lub więcej z następujących pól z AgentSchedule właściwość:

    • FrequencyType-Typ częstotliwości (na przykład dzienny lub tygodniowy), używany podczas planowania agenta.

    • FrequencyInterval-dzień tygodnia, wykonywana przez agenta.

    • FrequencyRelativeInterval-tygodnia danego miesiąca, w którym agent zaplanowanego co miesiąc.

    • FrequencyRecurrenceFactor-Liczba jednostek typu częstotliwość występujące między synchronizacjami.

    • FrequencySubDay-Jednostka częstotliwości agent jest uruchamiany częściej niż raz dziennie.

    • FrequencySubDayInterval-Liczba jednostek częstotliwości między uruchamiane, gdy agent jest uruchamiany częściej niż raz dziennie.

    • ActiveStartTime-najwcześniejszej czas w danym dniu rozpoczęcia uruchamiania agenta.

    • ActiveEndTime-czas najpóźniej w danym dniu rozpoczęcia uruchamiania agenta.

    • ActiveStartDate-pierwszy dzień harmonogramu agenta jest aktywna.

    • ActiveEndDate-ostatni dzień obowiązywania harmonogramu agenta.

    Ostrzeżenie

    Jeśli nie określisz jednej z tych właściwości, wartością domyślną jest zestaw.

  3. Wywołanie Create metoda do utworzenia subskrypcja.

Aby zdefiniować harmonogram agent replikacja podczas tworzenia subskrypcja wypychana do publikacja korespondencji seryjnej

  1. Utworzenie wystąpienie MergeSubscription klasy tworzenia subskrypcja.Aby uzyskać więcej informacji, zobacz Jak Utwórz subskrypcję wypychaną (Programowanie RMO).

  2. Zanim zadzwonisz do Create, zestaw jeden lub więcej z następujących pól z AgentSchedule właściwość:

    • FrequencyType-Typ częstotliwości (na przykład dzienny lub tygodniowy), używany podczas planowania agenta.

    • FrequencyInterval-dzień tygodnia, wykonywana przez agenta.

    • FrequencyRelativeInterval-tygodnia danego miesiąca, w którym agent zaplanowanego co miesiąc.

    • FrequencyRecurrenceFactor-Liczba jednostek typu częstotliwość występujące między synchronizacjami.

    • FrequencySubDay-Jednostka częstotliwości agent jest uruchamiany częściej niż raz dziennie.

    • FrequencySubDayInterval-Liczba jednostek częstotliwości między uruchamiane, gdy agent jest uruchamiany częściej niż raz dziennie.

    • ActiveStartTime-najwcześniejszej czas w danym dniu rozpoczęcia uruchamiania agenta.

    • ActiveEndTime-czas najpóźniej w danym dniu rozpoczęcia uruchamiania agenta.

    • ActiveStartDate-pierwszy dzień harmonogramu agenta jest aktywna.

    • ActiveEndDate-ostatni dzień obowiązywania harmonogramu agenta.

    Ostrzeżenie

    Jeśli nie określisz jednej z tych właściwości, wartością domyślną jest zestaw.

  3. Wywołanie Create metoda do utworzenia subskrypcja.

Przykład

To przykładowe polecenie tworzy subskrypcja wypychana do publikacja korespondencji seryjnej i określa harmonogram synchronizowanych subskrypcji.

         // Define the Publisher, publication, and databases.
            string publicationName = "AdvWorksSalesOrdersMerge";
            string publisherName = publisherInstance;
            string subscriberName = subscriberInstance;
            string subscriptionDbName = "AdventureWorks2008R2Replica";
            string publicationDbName = "AdventureWorks2008R2";
            string hostname = @"adventure-works\garrett1";

            //Create a connection to the Publisher.
            ServerConnection conn = new ServerConnection(subscriberName);

            // Create the objects that we need.
            MergePublication publication;
            MergeSubscription subscription;

            try
            {
                // Connect to the Publisher.
                conn.Connect();

                // Ensure that the publication exists and that 
                // it supports push subscriptions.
                publication = new MergePublication();
                publication.Name = publicationName;
                publication.DatabaseName = publicationDbName;
                publication.ConnectionContext = conn;

                if (publication.IsExistingObject)
                {
                    if ((publication.Attributes & PublicationAttributes.AllowPush) == 0)
                    {
                        publication.Attributes |= PublicationAttributes.AllowPush;
                    }

                    // Define the push subscription.
                    subscription = new MergeSubscription();
                    subscription.ConnectionContext = conn;
                    subscription.SubscriberName = subscriberName;
                    subscription.PublicationName = publicationName;
                    subscription.DatabaseName = publicationDbName;
                    subscription.SubscriptionDBName = subscriptionDbName;
                    subscription.HostName = hostname;

                    // Set a schedule to synchronize the subscription every 2 hours
                    // during weekdays from 6am to 10pm.
                    subscription.AgentSchedule.FrequencyType = ScheduleFrequencyType.Weekly;
                    subscription.AgentSchedule.FrequencyInterval = Convert.ToInt32(0x003E);
                    subscription.AgentSchedule.FrequencyRecurrenceFactor = 1;
                    subscription.AgentSchedule.FrequencySubDay = ScheduleFrequencySubDay.Hour;
                    subscription.AgentSchedule.FrequencySubDayInterval = 2;
                    subscription.AgentSchedule.ActiveStartDate = 20051108;
                    subscription.AgentSchedule.ActiveEndDate = 20071231;
                    subscription.AgentSchedule.ActiveStartTime = 060000;
                    subscription.AgentSchedule.ActiveEndTime = 100000;

                    // Specify the Windows login credentials for the Merge Agent job.
                    subscription.SynchronizationAgentProcessSecurity.Login = winLogin;
                    subscription.SynchronizationAgentProcessSecurity.Password = winPassword;

                    // Create the push subscription.
                    subscription.Create();
                }
                else
                {
                    // Do something here if the publication does not exist.
                    throw new ApplicationException(String.Format(
                        "The publication '{0}' does not exist on {1}.",
                        publicationName, publisherName));
                }
            }
            catch (Exception ex)
            {
                // Implement the appropriate error handling here.
                throw new ApplicationException(String.Format(
                    "The subscription to {0} could not be created.", publicationName), ex);
            }
            finally
            {
                conn.Disconnect();
            }
' Define the Publisher, publication, and databases.
Dim publicationName As String = "AdvWorksSalesOrdersMerge"
Dim publisherName As String = publisherInstance
Dim subscriberName As String = subscriberInstance
Dim subscriptionDbName As String = "AdventureWorks2008R2Replica"
Dim publicationDbName As String = "AdventureWorks2008R2"
Dim hostname As String = "adventure-works\garrett1"

'Create a connection to the Publisher.
Dim conn As ServerConnection = New ServerConnection(subscriberName)

' Create the objects that we need.
Dim publication As MergePublication
Dim subscription As MergeSubscription

Try
    ' Connect to the Publisher.
    conn.Connect()

    ' Ensure that the publication exists and that 
    ' it supports push subscriptions.
    publication = New MergePublication()
    publication.Name = publicationName
    publication.DatabaseName = publicationDbName
    publication.ConnectionContext = conn

    If publication.IsExistingObject Then
        If (publication.Attributes And PublicationAttributes.AllowPush) = 0 Then
            publication.Attributes = publication.Attributes _
            Or PublicationAttributes.AllowPush
        End If

        ' Define the push subscription.
        subscription = New MergeSubscription()
        subscription.ConnectionContext = conn
        subscription.SubscriberName = subscriberName
        subscription.PublicationName = publicationName
        subscription.DatabaseName = publicationDbName
        subscription.SubscriptionDBName = subscriptionDbName
        subscription.HostName = hostname

        ' Set a schedule to synchronize the subscription every 2 hours
        ' during weekdays from 6am to 10pm.
        subscription.AgentSchedule.FrequencyType = ScheduleFrequencyType.Weekly
        subscription.AgentSchedule.FrequencyInterval = Convert.ToInt32("0x003E", 16)
        subscription.AgentSchedule.FrequencyRecurrenceFactor = 1
        subscription.AgentSchedule.FrequencySubDay = ScheduleFrequencySubDay.Hour
        subscription.AgentSchedule.FrequencySubDayInterval = 2
        subscription.AgentSchedule.ActiveStartDate = 20051108
        subscription.AgentSchedule.ActiveEndDate = 20071231
        subscription.AgentSchedule.ActiveStartTime = 60000
        subscription.AgentSchedule.ActiveEndTime = 100000

        ' Specify the Windows login credentials for the Merge Agent job.
        subscription.SynchronizationAgentProcessSecurity.Login = winLogin
        subscription.SynchronizationAgentProcessSecurity.Password = winPassword

        ' Create the push subscription.
        subscription.Create()
    Else

        ' Do something here if the publication does not exist.
        Throw New ApplicationException(String.Format( _
         "The publication '{0}' does not exist on {1}.", _
         publicationName, publisherName))
    End If
Catch ex As Exception
    ' Implement the appropriate error handling here.
    Throw New ApplicationException(String.Format( _
    "The subscription to {0} could not be created.", publicationName), ex)
Finally
    conn.Disconnect()
End Try