Tentukan Jadwal Sinkronisasi

Berlaku untuk:SQL ServerAzure SQL Managed Instance

Topik ini menjelaskan cara menentukan jadwal sinkronisasi di SQL Server dengan menggunakan SQL Server Management Studio, Transact-SQL, atau Replication Management Objects (RMO). Saat membuat langganan, Anda dapat menentukan jadwal sinkronisasi yang mengontrol kapan agen replikasi untuk langganan akan berjalan. Jika Anda tidak menentukan parameter penjadwalan, langganan akan menggunakan jadwal default.

Langganan disinkronkan oleh Agen Distribusi (untuk rekam jepret dan replikasi transaksional) atau Agen Penggabungan (untuk replikasi penggabungan). Agen dapat berjalan terus menerus, berjalan sesuai permintaan, atau berjalan sesuai jadwal.

Dalam Topik Ini

Menggunakan SQL Server Management Studio

Tentukan jadwal sinkronisasi pada halaman Jadwal Sinkronisasi wizard Langganan Baru. Untuk informasi selengkapnya tentang mengakses wizard ini, lihat Membuat Langganan Push dan Membuat Langganan Pull.

Ubah jadwal sinkronisasi dalam kotak dialog Properti Jadwal Pekerjaan, yang tersedia dari folder Pekerjaan di SQL Server Management Studio dan dari jendela detail agen di Monitor Replikasi. Untuk informasi tentang memulai Monitor Replikasi, lihat Memulai Monitor Replikasi.

Jika Anda menentukan jadwal dari folder Pekerjaan , gunakan tabel berikut untuk menentukan nama pekerjaan agen.

Agen Nama pekerjaan
Gabungkan Agen untuk langganan penarikan <Publisher-PublicationDatabase-Publication-Subscriber-SubscriptionDatabase-integer><><><><><>
Gabungkan Agen untuk langganan push <Publisher-PublicationDatabase-Publication-Subscriber-integer><><><><>
Agen Distribusi untuk langganan push <Publisher-PublicationDatabase-Publication-Subscriber-integer><><><<>> 1
Agen Distribusi untuk langganan penarikan <Publisher-PublicationDatabase-Publication-Subscriber-SubscriptionDatabase-GUID><><><><<>> 2
Agen Distribusi untuk mendorong langganan ke Pelanggan non-SQL Server <Publisher-PublicationDatabase-Publication-Subscriber-integer><><><><>

1 Untuk langganan push ke publikasi Oracle, ini adalah< Publisher-Publisher><> daripada< Publisher-PublicationDatabase><>

2 Untuk langganan penarikan ke publikasi Oracle, ini adalah <Publisher-DistributionDatabase><> daripada< Publisher-PublicationDatabase><>

Untuk menentukan jadwal sinkronisasi

  1. Pada halaman SinkronisasiJadwal wizard Langganan Baru, pilih salah satu nilai berikut dari daftar drop-down Jadwal Agen untuk setiap langganan yang Anda buat:

    • Jalankan terus menerus

    • Jalankan sesuai permintaan saja

    • <Tentukan Jadwal...>

  2. Jika Anda memilih <Tentukan Jadwal...>, tentukan jadwal dalam kotak dialog Properti Jadwal Pekerjaan, lalu klik OK.

  3. Selesaikan wizard.

Untuk mengubah jadwal sinkronisasi untuk langganan push di Monitor Replikasi

  1. Perluas grup Publisher di panel kiri Monitor Replikasi, perluas Publisher, lalu klik publikasi.

  2. Klik tab Semua Langganan .

  3. Klik kanan langganan, lalu klik Tampilkan Detail.

  4. Di jendela SubscriptionName> Langganan<, klik Tindakan, lalu klik <Properti Pekerjaan AgentName>.

  5. Pada halaman Jadwal dari kotak dialog Properti Pekerjaan - <JobName>, klik Edit.

  6. Dalam kotak dialog Properti Jadwal Pekerjaan, pilih nilai dari daftar drop-down Jenis Jadwal:

    • Untuk menentukan bahwa agen harus berjalan terus menerus, pilih Mulai secara otomatis saat SQL Server Agent dimulai.

    • Untuk menentukan bahwa agen harus berjalan sesuai jadwal, pilih Berulang.

    • Untuk menentukan bahwa agen harus berjalan sesuai permintaan, pilih Satu kali.

  7. Jika Anda memilih Berulang, tentukan jadwal untuk agen.

  8. Pilih OK.

Untuk mengubah jadwal sinkronisasi untuk langganan push di Management Studio

  1. Koneksi ke Distributor di Management Studio, lalu perluas simpul server.

  2. Perluas folder SQL Server Agent, lalu perluas folder Pekerjaan.

  3. Klik kanan pekerjaan untuk Agen Distribusi atau Gabungkan Agen yang terkait dengan langganan, lalu klik Properti.

  4. Pada halaman Jadwal dari kotak dialog Properti Pekerjaan - <JobName>, klik Edit.

  5. Dalam kotak dialog Properti Jadwal Pekerjaan, pilih nilai dari daftar drop-down Jenis Jadwal:

    • Untuk menentukan bahwa agen harus berjalan terus menerus, pilih Mulai secara otomatis saat SQL Server Agent dimulai.

    • Untuk menentukan bahwa agen harus berjalan sesuai jadwal, pilih Berulang.

    • Untuk menentukan bahwa agen harus berjalan sesuai permintaan, pilih Satu kali.

  6. Jika Anda memilih Berulang, tentukan jadwal untuk agen.

  7. Pilih OK.

Untuk mengubah jadwal sinkronisasi untuk langganan penarikan di Management Studio

  1. Koneksi ke Pelanggan di Management Studio, lalu perluas simpul server.

  2. Perluas folder SQL Server Agent, lalu perluas folder Pekerjaan.

  3. Klik kanan pekerjaan untuk Agen Distribusi atau Gabungkan Agen yang terkait dengan langganan, lalu klik Properti.

  4. Pada halaman Jadwal dari kotak dialog Properti Pekerjaan - <JobName>, klik Edit.

  5. Dalam kotak dialog Properti Jadwal Pekerjaan, pilih nilai dari daftar drop-down Jenis Jadwal:

    • Untuk menentukan bahwa agen harus berjalan terus menerus, pilih Mulai secara otomatis saat SQL Server Agent dimulai.

    • Untuk menentukan bahwa agen harus berjalan sesuai jadwal, pilih Berulang.

    • Untuk menentukan bahwa agen harus berjalan sesuai permintaan, pilih Satu kali.

  6. Jika Anda memilih Berulang, tentukan jadwal untuk agen.

  7. Pilih OK.

Menggunakan T-SQL

Anda dapat menentukan jadwal sinkronisasi secara terprogram menggunakan prosedur tersimpan replikasi. Prosedur tersimpan yang Anda gunakan bergantung pada jenis replikasi dan jenis langganan (tarik atau dorong).

Jadwal ditentukan oleh parameter penjadwalan berikut, perilaku yang diwarisi dari sp_add_schedule (Transact-SQL):

  • @frequency_type - jenis frekuensi yang digunakan saat menjadwalkan agen.

  • @frequency_interval - hari dalam seminggu ketika agen berjalan.

  • @frequency_relative_interval - minggu bulan tertentu ketika agen dijadwalkan untuk berjalan setiap bulan.

  • @frequency_recurrence_factor - jumlah unit jenis frekuensi yang terjadi di antara sinkronisasi.

  • @frequency_subday - unit frekuensi ketika agen berjalan lebih sering daripada sekali sehari.

  • @frequency_subday_interval - jumlah unit frekuensi antara eksekusi ketika agen berjalan lebih sering daripada sekali sehari.

  • @active_start_time_of_day - waktu paling awal pada hari tertentu ketika agen berjalan akan dimulai.

  • @active_end_time_of_day - waktu terbaru dalam hari tertentu ketika agen berjalan akan dimulai.

  • @active_start_date - hari pertama jadwal agen akan berlaku.

  • @active_end_date - hari terakhir jadwal agen akan berlaku.

Untuk menentukan jadwal sinkronisasi untuk langganan penarikan ke publikasi transaksional

  1. Buat langganan penarikan baru ke publikasi transaksi. Untuk informasi selengkapnya, lihat Membuat Langganan Pull.

  2. Di Pelanggan, jalankan sp_addpullsubscription_agent (Transact-SQL). Tentukan kredensial @publisher, @publisher_db, @publication, dan Microsoft Windows tempat Agen Distribusi di Pelanggan berjalan untuk @job_name dan @password. Tentukan parameter sinkronisasi, yang dirinci di atas, yang menentukan jadwal untuk pekerjaan Agen Distribusi yang menyinkronkan langganan.

Untuk menentukan jadwal sinkronisasi untuk langganan push ke publikasi transaksional

  1. Buat langganan push baru ke publikasi transaksi. Untuk informasi selengkapnya, lihat Membuat Langganan Push.

  2. Di Pelanggan, jalankan sp_addpushsubscription_agent (Transact-SQL). Tentukan kredensial @subscriber, @subscriber_db, @publication, dan Windows tempat Agen Distribusi di Pelanggan berjalan untuk @job_name dan @password. Tentukan parameter sinkronisasi, yang dirinci di atas, yang menentukan jadwal untuk pekerjaan Agen Distribusi yang menyinkronkan langganan.

Untuk menentukan jadwal sinkronisasi untuk langganan penarikan ke publikasi gabungan

  1. Buat langganan penarikan baru ke publikasi gabungan. Untuk informasi selengkapnya, lihat Membuat Langganan Pull.

  2. Di Pelanggan, jalankan sp_addmergepullsubscription_agent. Tentukan kredensial @publisher, @publisher_db, @publication, dan Windows tempat Agen Penggabungan di Pelanggan berjalan untuk @job_name dan @password. Tentukan parameter sinkronisasi, yang dirinci di atas, yang menentukan jadwal untuk pekerjaan Agen Penggabungan yang menyinkronkan langganan.

Untuk menentukan jadwal sinkronisasi untuk langganan pendorongan ke publikasi gabungan

  1. Buat langganan push baru ke publikasi gabungan. Untuk informasi selengkapnya, lihat Membuat Langganan Push.

  2. Di Pelanggan, jalankan sp_addmergepushsubscription_agent. Tentukan kredensial @subscriber, @subscriber_db, @publication, dan Windows tempat Agen Penggabungan di Pelanggan berjalan untuk @job_name dan @password. Tentukan parameter sinkronisasi, yang dirinci di atas, yang menentukan jadwal untuk pekerjaan Agen Penggabungan yang menyinkronkan langganan.

Menggunakan Objek Manajemen Replikasi (RMO)

Replikasi menggunakan SQL Server Agent untuk menjadwalkan pekerjaan untuk aktivitas yang terjadi secara berkala, seperti pembuatan rekam jepret dan sinkronisasi langganan. Anda dapat menggunakan Objek Manajemen Replikasi (RMO) secara terprogram untuk menentukan jadwal untuk pekerjaan agen replikasi.

Catatan

Saat Anda membuat langganan dan menentukan nilai false untuk CreateSyncAgentByDefault (perilaku default untuk langganan penarikan) pekerjaan agen tidak dibuat dan properti penjadwalan diabaikan. Dalam hal ini, jadwal sinkronisasi harus ditentukan oleh aplikasi. Untuk informasi selengkapnya, lihat Membuat Langganan Pull dan Membuat Langganan Push.

Untuk menentukan jadwal agen replikasi saat Anda membuat langganan push ke publikasi transaksional

  1. Buat instans TransSubscription kelas untuk langganan yang Anda buat. Untuk informasi selengkapnya, lihat Membuat Langganan Push.

  2. Sebelum Anda memanggil Create, atur satu atau beberapa bidang AgentSchedule properti berikut:

    Catatan

    Jika Anda tidak menentukan salah satu properti ini, nilai default diatur.

  3. Create Panggil metode untuk membuat langganan.

Untuk menentukan jadwal agen replikasi saat Anda membuat langganan penarikan ke publikasi transaksional

  1. Buat instans TransPullSubscription kelas untuk langganan yang Anda buat. Untuk informasi selengkapnya, lihat Membuat Langganan Pull.

  2. Sebelum Anda memanggil Create, atur satu atau beberapa bidang AgentSchedule properti berikut:

    Catatan

    Jika Anda tidak menentukan salah satu properti ini, nilai default diatur.

  3. Create Panggil metode untuk membuat langganan.

Untuk menentukan jadwal agen replikasi saat Anda membuat langganan penarikan ke publikasi gabungan

  1. Buat instans MergePullSubscription kelas untuk langganan yang Anda buat. Untuk informasi selengkapnya, lihat Membuat Langganan Pull.

  2. Sebelum Anda memanggil Create, atur satu atau beberapa bidang AgentSchedule properti berikut:

    Catatan

    Jika Anda tidak menentukan salah satu properti ini, nilai default diatur.

  3. Create Panggil metode untuk membuat langganan.

Untuk menentukan jadwal agen replikasi saat Anda membuat langganan push ke publikasi gabungan

  1. Buat instans MergeSubscription kelas untuk langganan yang Anda buat. Untuk informasi selengkapnya, lihat Membuat Langganan Push.

  2. Sebelum Anda memanggil Create, atur satu atau beberapa bidang AgentSchedule properti berikut:

    Catatan

    Jika Anda tidak menentukan salah satu properti ini, nilai default diatur.

  3. Create Panggil metode untuk membuat langganan.

Contoh (RMO)

Contoh ini membuat langganan pendorongan ke publikasi gabungan dan menentukan jadwal di mana langganan disinkronkan.

// 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

Lihat Juga

Praktik Terbaik Keamanan Replikasi
Berlangganan Publikasi
Menyinkronkan Langganan Push
Menyinkronkan Langganan Pull
Menyinkronkan Data