Tentukan Jadwal Sinkronisasi
Berlaku untuk: SQL Server Azure 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
Untuk menentukan jadwal sinkronisasi, gunakan:
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
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...>
Jika Anda memilih <Tentukan Jadwal...>, tentukan jadwal dalam kotak dialog Properti Jadwal Pekerjaan, lalu klik OK.
Selesaikan wizard.
Untuk mengubah jadwal sinkronisasi untuk langganan push di Monitor Replikasi
Perluas grup Publisher di panel kiri Monitor Replikasi, perluas Publisher, lalu klik publikasi.
Klik tab Semua Langganan .
Klik kanan langganan, lalu klik Tampilkan Detail.
Di jendela SubscriptionName> Langganan<, klik Tindakan, lalu klik <Properti Pekerjaan AgentName>.
Pada halaman Jadwal dari kotak dialog Properti Pekerjaan - <JobName>, klik Edit.
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.
Jika Anda memilih Berulang, tentukan jadwal untuk agen.
Pilih OK.
Untuk mengubah jadwal sinkronisasi untuk langganan push di Management Studio
Sambungkan ke Distributor di Management Studio, lalu perluas simpul server.
Perluas folder SQL Server Agent, lalu perluas folder Pekerjaan.
Klik kanan pekerjaan untuk Agen Distribusi atau Gabungkan Agen yang terkait dengan langganan, lalu klik Properti.
Pada halaman Jadwal dari kotak dialog Properti Pekerjaan - <JobName>, klik Edit.
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.
Jika Anda memilih Berulang, tentukan jadwal untuk agen.
Pilih OK.
Untuk mengubah jadwal sinkronisasi untuk langganan penarikan di Management Studio
Sambungkan ke Pelanggan di Management Studio, lalu perluas simpul server.
Perluas folder SQL Server Agent, lalu perluas folder Pekerjaan.
Klik kanan pekerjaan untuk Agen Distribusi atau Gabungkan Agen yang terkait dengan langganan, lalu klik Properti.
Pada halaman Jadwal dari kotak dialog Properti Pekerjaan - <JobName>, klik Edit.
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.
Jika Anda memilih Berulang, tentukan jadwal untuk agen.
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
Buat langganan penarikan baru ke publikasi transaksi. Untuk informasi selengkapnya, lihat Membuat Langganan Pull.
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
Buat langganan push baru ke publikasi transaksi. Untuk informasi selengkapnya, lihat Membuat Langganan Push.
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
Buat langganan penarikan baru ke publikasi gabungan. Untuk informasi selengkapnya, lihat Membuat Langganan Pull.
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
Buat langganan push baru ke publikasi gabungan. Untuk informasi selengkapnya, lihat Membuat Langganan Push.
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
Buat instans TransSubscription kelas untuk langganan yang Anda buat. Untuk informasi selengkapnya, lihat Membuat Langganan Push.
Sebelum Anda memanggil Create, atur satu atau beberapa bidang AgentSchedule properti berikut:
FrequencyType - jenis frekuensi (seperti harian atau mingguan) yang Anda gunakan saat Anda menjadwalkan agen.
FrequencyInterval - hari dalam seminggu agen berjalan.
FrequencyRelativeInterval - minggu bulan tertentu ketika agen dijadwalkan untuk berjalan setiap bulan.
FrequencyRecurrenceFactor - jumlah unit jenis frekuensi yang terjadi di antara sinkronisasi.
FrequencySubDay - unit frekuensi ketika agen berjalan lebih sering daripada sekali sehari.
FrequencySubDayInterval - jumlah unit frekuensi antara eksekusi ketika agen berjalan lebih sering daripada sekali sehari.
ActiveStartTime - waktu paling awal pada hari tertentu yang dijalankan agen dimulai.
ActiveEndTime - waktu terbaru pada hari tertentu yang dijalankan agen dimulai.
ActiveStartDate - hari pertama jadwal agen berlaku.
ActiveEndDate - hari terakhir bahwa jadwal agen berlaku.
Catatan
Jika Anda tidak menentukan salah satu properti ini, nilai default diatur.
Create Panggil metode untuk membuat langganan.
Untuk menentukan jadwal agen replikasi saat Anda membuat langganan penarikan ke publikasi transaksional
Buat instans TransPullSubscription kelas untuk langganan yang Anda buat. Untuk informasi selengkapnya, lihat Membuat Langganan Pull.
Sebelum Anda memanggil Create, atur satu atau beberapa bidang AgentSchedule properti berikut:
FrequencyType - jenis frekuensi (seperti harian atau mingguan) yang Anda gunakan saat Menjadwalkan agen.
FrequencyInterval - hari dalam seminggu agen berjalan.
FrequencyRelativeInterval - minggu bulan tertentu bahwa agen dijadwalkan untuk berjalan setiap bulan.
FrequencyRecurrenceFactor - jumlah unit jenis frekuensi yang terjadi di antara sinkronisasi.
FrequencySubDay - unit frekuensi ketika agen berjalan lebih sering daripada sekali sehari.
FrequencySubDayInterval - jumlah unit frekuensi antara eksekusi ketika agen berjalan lebih sering daripada sekali sehari.
ActiveStartTime - waktu paling awal pada hari tertentu yang dijalankan agen dimulai.
ActiveEndTime - waktu terbaru pada hari tertentu yang dijalankan agen dimulai.
ActiveStartDate - hari pertama jadwal agen berlaku.
ActiveEndDate - hari terakhir bahwa jadwal agen berlaku.
Catatan
Jika Anda tidak menentukan salah satu properti ini, nilai default diatur.
Create Panggil metode untuk membuat langganan.
Untuk menentukan jadwal agen replikasi saat Anda membuat langganan penarikan ke publikasi gabungan
Buat instans MergePullSubscription kelas untuk langganan yang Anda buat. Untuk informasi selengkapnya, lihat Membuat Langganan Pull.
Sebelum Anda memanggil Create, atur satu atau beberapa bidang AgentSchedule properti berikut:
FrequencyType - jenis frekuensi (seperti harian atau mingguan) yang Anda gunakan saat Menjadwalkan agen.
FrequencyInterval - hari dalam seminggu agen berjalan.
FrequencyRelativeInterval - minggu bulan tertentu bahwa agen dijadwalkan untuk berjalan setiap bulan.
FrequencyRecurrenceFactor - jumlah unit jenis frekuensi yang terjadi di antara sinkronisasi.
FrequencySubDay - unit frekuensi ketika agen berjalan lebih sering daripada sekali sehari.
FrequencySubDayInterval - jumlah unit frekuensi antara eksekusi ketika agen berjalan lebih sering daripada sekali sehari.
ActiveStartTime - waktu paling awal pada hari tertentu yang dijalankan agen dimulai.
ActiveEndTime - waktu terbaru pada hari tertentu yang dijalankan agen dimulai.
ActiveStartDate - hari pertama jadwal agen berlaku.
ActiveEndDate - hari terakhir bahwa jadwal agen berlaku.
Catatan
Jika Anda tidak menentukan salah satu properti ini, nilai default diatur.
Create Panggil metode untuk membuat langganan.
Untuk menentukan jadwal agen replikasi saat Anda membuat langganan push ke publikasi gabungan
Buat instans MergeSubscription kelas untuk langganan yang Anda buat. Untuk informasi selengkapnya, lihat Membuat Langganan Push.
Sebelum Anda memanggil Create, atur satu atau beberapa bidang AgentSchedule properti berikut:
FrequencyType - jenis frekuensi (seperti harian atau mingguan) yang Anda gunakan saat Menjadwalkan agen.
FrequencyInterval - hari dalam seminggu agen berjalan.
FrequencyRelativeInterval - minggu bulan tertentu bahwa agen dijadwalkan untuk berjalan setiap bulan.
FrequencyRecurrenceFactor - jumlah unit jenis frekuensi yang terjadi di antara sinkronisasi.
FrequencySubDay - unit frekuensi ketika agen berjalan lebih sering daripada sekali sehari.
FrequencySubDayInterval - jumlah unit frekuensi antara eksekusi ketika agen berjalan lebih sering daripada sekali sehari.
ActiveStartTime - waktu paling awal pada hari tertentu yang dijalankan agen dimulai.
ActiveEndTime - waktu terbaru pada hari tertentu yang dijalankan agen dimulai.
ActiveStartDate - hari pertama jadwal agen berlaku.
ActiveEndDate - hari terakhir bahwa jadwal agen berlaku.
Catatan
Jika Anda tidak menentukan salah satu properti ini, nilai default diatur.
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