Angeben von Synchronisierungszeitplänen

Gilt für:SQL ServerAzure SQL Managed Instance

In diesem Thema wird beschrieben, wie Sie Synchronisierungszeitpläne in SQL Server mithilfe von SQL Server Management Studio, Transact-SQL oder Replikationsverwaltungsobjekten (RMO) festlegen. Während der Erstellung eines Abonnements kann ein Synchronisierungszeitplan definiert werden, der steuert, wann der Replikations-Agent für das Abonnement ausgeführt wird. Wenn Sie keine Zeitplanungsparameter angeben, wird der Standardzeitplan für das Abonnement verwendet.

Abonnements werden vom Verteilungs-Agent (für Snapshot- und Transaktionsreplikation) oder vom Merge-Agent (für Mergereplikation) synchronisiert. Agents können kontinuierlich, bei Bedarf oder nach einem Zeitplan ausgeführt werden.

Verwendung von SQL Server Management Studio

Legen Sie Synchronisierungszeitpläne auf der Seite Synchronisierungszeitplan des Assistenten für neue Abonnements fest. Weitere Informationen zum Zugreifen auf diesen Assistenten finden Sie unter Create a Push Subscription und Create a Pull Subscription.

Ändern Sie die Synchronisierungszeitpläne im Dialogfeld Eigenschaften des Auftragszeitplans. Dieses Dialogfeld ist über den Ordner Aufträge in SQL Server Management Studio und im Detailfenster des Agents im Replikationsmonitor verfügbar. Informationen zum Starten des Replikationsmonitors finden Sie unter Starten des Replikationsmonitors.

Wenn Sie die Zeitpläne über den Ordner Aufträge angeben, verwenden Sie die folgende Tabelle, um den Auftragsnamen des Agents zu ermitteln.

Agent Auftragsname
Merge-Agent für Pullabonnements <Verleger-Publikationsdatenbank-Publikation-Abonnent-Abonnementdatenbank-Ganzzahl><><><><><>
Merge-Agent für Pushabonnements <Verleger-Publikationsdatenbank-Publikation-Abonnent-Ganzzahl><><><><>
Verteilungs-Agent für Pushabonnements <Publisher-PublicationDatabase-Publication-Subscriber-integer><><><><>1
Verteilungs-Agent für Pull-Abonnements <Publisher>-<Publikationsdatenbank>-<Publikation>-<Abonnent>-<Abonnementdatenbank>-<GUID>2
Verteilungs-Agent für Pushabonnements für Nicht-SQL Server-Abonnenten <Verleger-Publikationsdatenbank-Publikation-Abonnent-Ganzzahl><><><><>

1Bei Pushabonnements für Oracle-Veröffentlichungen lautet der Name <Publisher>-<Publisher> statt <Publisher>-<PublicationDatabase>

2Bei Pullabonnements für Oracle-Veröffentlichungen lautet der Name <Publisher>-<DistributionDatabase> statt <Publisher>-<PublicationDatabase>

So geben Sie Synchronisierungszeitpläne an

  1. Wählen Sie im Assistenten für neue Abonnements auf der Seite Synchronisierungszeitplan für jedes Abonnement, das Sie erstellen, einen der folgenden Werte aus der Dropdownliste Agentzeitplan aus:

    • Fortlaufend ausführen

    • Nur bedarfsgesteuert ausführen

    • <Zeitplan definieren…>

  2. Geben Sie bei der Auswahl von <Zeitplan definieren…> im Dialogfeld Eigenschaften des Auftragszeitplans einen Zeitplan an, und klicken Sie dann auf OK.

  3. Schließen Sie den Assistenten ab.

So ändern Sie einen Synchronisierungszeitplan für ein Pushabonnement im Replikationsmonitor

  1. Erweitern Sie im linken Bereich des Replikationsmonitors eine Verlegergruppe, erweitern Sie einen Verleger, und klicken Sie dann auf eine Veröffentlichung.

  2. Klicken Sie auf die Registerkarte Alle Abonnements .

  3. Klicken Sie mit der rechten Maustaste auf ein Abonnement, und klicken Sie dann auf Details anzeigen.

  4. Klicken Sie im Fenster Abonnement < SubscriptionName> auf Aktion und klicken Sie dann auf <AgentName> Auftragseigenschaften.

  5. Klicken Sie auf der Seite > des Dialogfelds Job Properties - JobName auf Bearbeiten.

  6. Wählen Sie im Dialogfeld Eigenschaften des Auftragszeitplans einen Wert aus der Dropdownliste Zeitplantyp aus:

    • Um eine fortlaufende Ausführung des Agents anzugeben, wählen Sie Automatisch starten, wenn der SQL Server-Agent startetaus.

    • Um anzugeben, dass der Agent nach einem Zeitplan ausgeführt werden soll, wählen Sie Wiederkehrend aus.

    • Um festzulegen, dass der Agent bei Bedarf ausgeführt wird, wählen Sie Einmal aus.

  7. Geben Sie bei der Auswahl von Wiederholteinen Zeitplan für den Agent an.

  8. Wählen Sie OK aus.

So ändern Sie einen Synchronisierungszeitplan für ein Pushabonnement in Management Studio

  1. Stellen Sie in Management Studio eine Verbindung mit dem Verteiler her, und erweitern Sie dann den Serverknoten.

  2. Erweitern Sie den Ordner SQL Server-Agent und anschließend den Ordner Aufträge .

  3. Klicken Sie mit der rechten Maustaste auf den Auftrag des Verteilungs-Agents oder Merge-Agents, der dem Abonnement zugeordnet ist, und klicken Sie dann auf Eigenschaften.

  4. Klicken Sie im Dialogfeld Job Properties - JobName auf der Seite Zeitpläne auf Bearbeiten.

  5. Wählen Sie im Dialogfeld Eigenschaften des Auftragszeitplans einen Wert aus der Dropdownliste Zeitplantyp aus:

    • Um eine fortlaufende Ausführung des Agents anzugeben, wählen Sie Automatisch starten, wenn der SQL Server-Agent startetaus.

    • Um anzugeben, dass der Agent nach einem Zeitplan ausgeführt werden soll, wählen Sie Wiederkehrend aus.

    • Um festzulegen, dass der Agent bei Bedarf ausgeführt wird, wählen Sie Einmal aus.

  6. Geben Sie bei der Auswahl von Wiederholteinen Zeitplan für den Agent an.

  7. Wählen Sie OK aus.

So ändern Sie einen Synchronisierungszeitplan für ein Pullabonnement in Management Studio

  1. Stellen Sie mit dem Abonnenten in SQL Server Management Studio eine Verbindung her, und erweitern Sie dann den Serverknoten.

  2. Erweitern Sie den Ordner SQL Server-Agent und anschließend den Ordner Aufträge .

  3. Klicken Sie mit der rechten Maustaste auf den Auftrag des Verteilungs-Agents oder Merge-Agents, der dem Abonnement zugeordnet ist, und klicken Sie dann auf Eigenschaften.

  4. Klicken Sie im Dialogfeld Job Properties - JobName auf der Seite Zeitpläne auf Bearbeiten.

  5. Wählen Sie im Dialogfeld Eigenschaften des Auftragszeitplans einen Wert aus der Dropdownliste Zeitplantyp aus:

    • Um eine fortlaufende Ausführung des Agents anzugeben, wählen Sie Automatisch starten, wenn der SQL Server-Agent startetaus.

    • Um anzugeben, dass der Agent nach einem Zeitplan ausgeführt werden soll, wählen Sie Wiederkehrend aus.

    • Um festzulegen, dass der Agent bei Bedarf ausgeführt wird, wählen Sie Einmal aus.

  6. Geben Sie bei der Auswahl von Wiederholteinen Zeitplan für den Agent an.

  7. Wählen Sie OK aus.

Verwenden von Transact-SQL

Sie können Synchronisierungszeitpläne mit gespeicherten Replikationsprozeduren programmgesteuert definieren. Welche gespeicherten Prozeduren Sie verwenden, hängt vom Typ der Replikation und vom Typ des Abonnements (Pull oder Push) ab.

Ein Zeitplan wird durch die folgenden Zeitplanungsparameter definiert, deren Verhalten von sp_add_schedule (Transact-SQL) geerbt wird:

  • @frequency_type – der Frequenztyp, der bei der Zeitplanung des Agenten verwendet wird.

  • @frequency_interval - der Tag der Woche, an dem ein Agent läuft.

  • @frequency_relative_interval – die Woche eines bestimmten Monats, in der der Agent monatlich ausgeführt werden soll.

  • @frequency_recurrence_factor – die Anzahl der Einheiten vom Typ „Frequenz“, die zwischen den Synchronisierungen auftreten.

  • @frequency_subday – die Häufigkeitseinheit, wenn der Agent mehr als einmal pro Tag ausgeführt wird.

  • @frequency_subday_interval – die Anzahl der Frequenzeinheiten zwischen den Ausführungen, wenn der Agent öfter als einmal täglich ausgeführt wird.

  • @active_start_time_of_day – die früheste Uhrzeit an einem bestimmten Tag, zu der ein Agentlauf startet.

  • @active_end_time_of_day – die späteste Uhrzeit an einem bestimmten Tag, zu der die Ausführung eines Agenten startet.

  • @active_start_date – der erste Tag, an dem der Zeitplan des Agenten wirksam wird.

  • @active_end_date – der letzte Tag, an dem der Zeitplan des Agenten gilt.

So definieren Sie den Zeitplan für die Synchronisierung für ein Pullabonnement für eine transaktionale Veröffentlichung

  1. Erstellen Sie ein neues Pullabonnement für eine Transaktionsveröffentlichung. Weitere Informationen finden Sie unter Create a Pull Subscription.

  2. Führen Sie auf dem Abonnenten sp_addpullsubscription_agent (Transact-SQL) aus. Geben Sie @publisher, @publisher_db, @publication und die Microsoft Windows-Anmeldeinformationen, unter denen der Verteilungs-Agent auf dem Abonnenten ausgeführt wird, für @job_name und @job_password an. Geben Sie die oben beschriebenen Synchronisierungsparameter an, mit denen der Zeitplan für den Verteilungs-Agentauftrag zur Synchronisierung des Abonnements definiert wird.

So definieren Sie den Synchronisierungszeitplan für ein Pushabonnement für eine Transaktionsveröffentlichung

  1. Erstellen Sie ein neues Pushabonnement für eine Transaktionsveröffentlichung. Weitere Informationen finden Sie unter Create a Push Subscription.

  2. Führen Sie auf dem Abonnenten sp_addpushsubscription_agent (Transact-SQL) aus. Geben Sie @subscriber, @subscriber_db, @publicationund die Windows-Anmeldeinformationen, unter denen der Verteilungs-Agent auf dem Abonnenten ausgeführt wird, für @job_name und @job_passwordan. Geben Sie die oben beschriebenen Synchronisierungsparameter an, mit denen der Zeitplan für den Verteilungs-Agentauftrag zur Synchronisierung des Abonnements definiert wird.

Synchronisierungszeitplan für ein Pull-Abonnement für eine Mergeveröffentlichung definieren

  1. Erstellen Sie ein neues Pullabonnement für eine Mergeveröffentlichung. Weitere Informationen finden Sie unter Create a Pull Subscription.

  2. Führen Sie beim Abonnenten sp_addmergepullsubscription_agent aus. Geben Sie @publisher, @publisher_db, @publicationund die Windows-Anmeldeinformationen, unter denen der Merge-Agent auf dem Abonnenten ausgeführt wird, für @job_name und @job_passwordan. Geben Sie die oben beschriebenen Synchronisierungsparameter an, mit denen der Zeitplan für den Merge-Agentauftrag zur Synchronisierung des Abonnements definiert wird.

So definieren Sie den Synchronisierungszeitplan für ein Pushabonnement für eine Mergeveröffentlichung

  1. Erstellen Sie ein neues Pushabonnement für eine Mergeveröffentlichung. Weitere Informationen finden Sie unter Create a Push Subscription.

  2. Führen Sie auf dem Abonnenten sp_addmergepushsubscription_agent aus. Geben Sie @subscriber, @subscriber_db, @publicationund die Windows-Anmeldeinformationen, unter denen der Merge-Agent auf dem Abonnenten ausgeführt wird, für @job_name und @job_passwordan. Geben Sie die oben beschriebenen Synchronisierungsparameter an, mit denen der Zeitplan für den Merge-Agentauftrag zur Synchronisierung des Abonnements definiert wird.

Verwenden von Replikationsverwaltungsobjekten (RMO)

Die Replikation verwendet den SQL Server-Agent, um Aufträge für regelmäßig auftretende Aktivitäten wie die Momentaufnahmegenerierung und die Abonnementsynchronisierung zu planen. Sie können Replikationsverwaltungsobjekte (RMO) programmgesteuert verwenden, um Zeitpläne für Replikations-Agentaufträge anzugeben.

Hinweis

Wenn Sie ein Abonnement erstellen und den Wert false für CreateSyncAgentByDefault (das Standardverhalten für Pullabonnements) angeben, wird der Agentauftrag nicht erstellt und die Zeitplanungseigenschaften werden ignoriert. In diesem Fall muss der Synchronisierungszeitplan von der Anwendung bestimmt werden. Weitere Informationen finden Sie unter Create a Pull Subscription und Create a Push Subscription.

So definieren Sie einen Zeitplan für den Replikations-Agent, wenn Sie ein Push-Abonnement für eine transaktionale Veröffentlichung erstellen

  1. Erstellen Sie eine Instanz der TransSubscription -Klasse für das Abonnement, das Sie erstellen. Weitere Informationen finden Sie unter Create a Push Subscription.

  2. Bevor Sie Createaufrufen, legen Sie mindestens eines der folgenden Felder der AgentSchedule -Eigenschaft fest:

    • FrequencyType – die Art der Häufigkeit (z. B. täglich oder wöchentlich), die Sie verwenden, wenn Sie den Agent planen.

    • FrequencyInterval - der Tag der Woche, an dem ein Agent ausgeführt wird.

    • FrequencyRelativeInterval – die Woche eines bestimmten Monats, in der der Agent für die monatliche Ausführung vorgesehen ist.

    • FrequencyRecurrenceFactor – die Anzahl der Frequenzeinheiten, die zwischen Synchronisierungen auftreten.

    • FrequencySubDay – die Frequenzeinheit, wenn der Agent mehr als einmal pro Tag ausgeführt wird.

    • FrequencySubDayInterval – die Anzahl der Frequenzeinheiten zwischen Ausführungen, wenn der Agent mehr als einmal täglich ausgeführt wird.

    • ActiveStartTime – der früheste Zeitpunkt an einem bestimmten Tag, zu dem eine Agent-Ausführung gestartet wird.

    • ActiveEndTime – der späteste Zeitpunkt an einem bestimmten Tag, zu dem eine Agent-Ausführung gestartet wird.

    • ActiveStartDate – der erste Tag, an dem der Zeitplan des Agents in Kraft tritt.

    • ActiveEndDate – letzter Tag, an dem der Zeitplan des Agenten gültig ist.

    Hinweis

    Wenn Sie keine dieser Eigenschaften angeben, wird ein Standardwert festgelegt.

  3. Rufen Sie die Create -Methode auf, um das Abonnement zu erstellen.

So definieren Sie einen Zeitplan für den Replikations-Agent, wenn Sie ein Pull-Abonnement für eine Transaktionsveröffentlichung erstellen

  1. Erstellen Sie eine Instanz der TransPullSubscription -Klasse für das Abonnement, das Sie erstellen. Weitere Informationen finden Sie unter Create a Pull Subscription.

  2. Bevor Sie Createaufrufen, legen Sie mindestens eines der folgenden Felder der AgentSchedule -Eigenschaft fest:

    • FrequencyType – die Art der Häufigkeit (z. B. täglich oder wöchentlich), die Sie bei der Planung des Agenten verwenden.

    • FrequencyInterval – der Wochentag, an dem ein Agent ausgeführt wird.

    • FrequencyRelativeInterval - die Woche eines angegebenen Monats, in der der Agent monatlich ausgeführt werden soll.

    • FrequencyRecurrenceFactor – die Anzahl der Einheiten des Typs „Frequenz“, die zwischen Synchronisierungen auftreten.

    • FrequencySubDay - die Frequenzeinheit, wenn der Agent mehr als einmal täglich ausgeführt wird.

    • FrequencySubDayInterval – die Anzahl der Frequenzeinheiten zwischen Ausführungen, wenn der Agent öfter als einmal täglich ausgeführt wird.

    • ActiveStartTime – der früheste Zeitpunkt an einem bestimmten Tag, zu dem eine Agent-Ausführung gestartet wird.

    • ActiveEndTime – der späteste Zeitpunkt an einem bestimmten Tag, zu dem eine Agent-Ausführung gestartet wird.

    • ActiveStartDate - der erste Tag, an dem der Zeitplan des Agenten gilt.

    • ActiveEndDate – letzter Tag, an dem der Zeitplan des Agenten gültig ist.

    Hinweis

    Wenn Sie keine dieser Eigenschaften angeben, wird ein Standardwert festgelegt.

  3. Rufen Sie die Create -Methode auf, um das Abonnement zu erstellen.

So definieren Sie den Zeitplan für den Replikations-Agent, wenn Sie ein Pull-Abonnement für eine Mergeveröffentlichung erstellen

  1. Erstellen Sie eine Instanz der MergePullSubscription -Klasse für das Abonnement, das Sie erstellen. Weitere Informationen finden Sie unter Create a Pull Subscription.

  2. Bevor Sie Createaufrufen, legen Sie mindestens eines der folgenden Felder der AgentSchedule -Eigenschaft fest:

    • FrequencyType – die Art der Häufigkeit (z. B. täglich oder wöchentlich), die Sie beim Planen des Agenten verwenden.

    • FrequencyInterval – der Wochentag, an dem ein Agent läuft.

    • FrequencyRelativeInterval – die Woche eines angegebenen Monats, in der die monatliche Ausführung des Agenten geplant ist.

    • FrequencyRecurrenceFactor – die Anzahl der Einheiten vom Typ Frequenz, die zwischen Synchronisierungen auftreten.

    • FrequencySubDay - die Frequenzeinheit, wenn der Agent mehr als einmal täglich ausgeführt wird.

    • FrequencySubDayInterval – die Anzahl der Frequenzeinheiten zwischen Ausführungen, wenn der Agent öfter als einmal täglich ausgeführt wird.

    • ActiveStartTime – der früheste Zeitpunkt an einem bestimmten Tag, zu dem eine Agent-Ausführung gestartet wird.

    • ActiveEndTime – spätester Zeitpunkt an einem gegebenen Tag, zu dem ein Agentenlauf beginnt.

    • ActiveStartDate – erster Tag, an dem der Zeitplan des Agenten gilt.

    • ActiveEndDate - letzter Tag, an dem der Zeitplan des Agenten in Kraft ist.

    Hinweis

    Wenn Sie keine dieser Eigenschaften angeben, wird ein Standardwert festgelegt.

  3. Rufen Sie die Create -Methode auf, um das Abonnement zu erstellen.

So definieren Sie einen Zeitplan des Replikations-Agents, wenn Sie ein Pushabonnement für eine Mergeveröffentlichung erstellen

  1. Erstellen Sie eine Instanz der MergeSubscription -Klasse für das Abonnement, das Sie erstellen. Weitere Informationen finden Sie unter Create a Push Subscription.

  2. Bevor Sie Createaufrufen, legen Sie mindestens eines der folgenden Felder der AgentSchedule -Eigenschaft fest:

    • FrequencyType – die Frequenzart (z. B. täglich oder wöchentlich), die Sie verwenden, wenn Sie den Agenten planen.

    • FrequencyInterval – der Wochentag, an dem ein Agent ausgeführt wird.

    • FrequencyRelativeInterval – die Woche eines angegebenen Monats, in der der Agent monatlich ausgeführt werden soll.

    • FrequencyRecurrenceFactor – die Anzahl der Einheiten vom Typ Frequenz, die zwischen Synchronisierungen auftreten.

    • FrequencySubDay - die Frequenzeinheit, wenn der Agent öfter als einmal täglich ausgeführt wird.

    • FrequencySubDayInterval – die Anzahl der Frequenzeinheiten zwischen den Ausführungen, wenn der Agent öfter als einmal täglich ausgeführt wird.

    • ActiveStartTime – der früheste Zeitpunkt an einem bestimmten Tag, zu dem eine Agent-Ausführung gestartet wird.

    • ActiveEndTime – der späteste Zeitpunkt an einem bestimmten Tag, zu dem eine Agent-Ausführung gestartet wird.

    • ActiveStartDate - der erste Tag, an dem der Zeitplan des Agents in Kraft ist.

    • ActiveEndDate – letzter Tag, an dem der Zeitplan des Agents gültig ist.

    Hinweis

    Wenn Sie keine dieser Eigenschaften angeben, wird ein Standardwert festgelegt.

  3. Rufen Sie die Create -Methode auf, um das Abonnement zu erstellen.

Beispiel (RMO)

In diesem Beispiel wird ein Pushabonnement für eine Mergeveröffentlichung erstellt und der Zeitplan angegeben, nach dem das Abonnement synchronisiert wird.

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

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

// 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 = "AdventureWorks2022Replica"
Dim publicationDbName As String = "AdventureWorks2022"
Dim hostname As String = "adventure-works\garrett1"

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

' 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