sp_addmergesubscription (T-SQL)
Berlaku untuk: SQL Server Azure SQL Managed Instance
Membuat langganan penggabungan push atau pull. Prosedur tersimpan ini dijalankan di Publisher pada database publikasi.
Sintaks
sp_addmergesubscription
[ @publication = ] N'publication'
[ , [ @subscriber = ] N'subscriber' ]
[ , [ @subscriber_db = ] N'subscriber_db' ]
[ , [ @subscription_type = ] N'subscription_type' ]
[ , [ @subscriber_type = ] N'subscriber_type' ]
[ , [ @subscription_priority = ] subscription_priority ]
[ , [ @sync_type = ] N'sync_type' ]
[ , [ @frequency_type = ] frequency_type ]
[ , [ @frequency_interval = ] frequency_interval ]
[ , [ @frequency_relative_interval = ] frequency_relative_interval ]
[ , [ @frequency_recurrence_factor = ] frequency_recurrence_factor ]
[ , [ @frequency_subday = ] frequency_subday ]
[ , [ @frequency_subday_interval = ] frequency_subday_interval ]
[ , [ @active_start_time_of_day = ] active_start_time_of_day ]
[ , [ @active_end_time_of_day = ] active_end_time_of_day ]
[ , [ @active_start_date = ] active_start_date ]
[ , [ @active_end_date = ] active_end_date ]
[ , [ @optional_command_line = ] N'optional_command_line' ]
[ , [ @description = ] N'description' ]
[ , [ @enabled_for_syncmgr = ] N'enabled_for_syncmgr' ]
[ , [ @offloadagent = ] offloadagent ]
[ , [ @offloadserver = ] N'offloadserver' ]
[ , [ @use_interactive_resolver = ] N'use_interactive_resolver' ]
[ , [ @merge_job_name = ] N'merge_job_name' ]
[ , [ @hostname = ] N'hostname' ]
[ ; ]
Argumen
[ @publication = ] N'publikasi'
Nama publikasi. @publication adalah sysname, tanpa default. Publikasi harus sudah ada.
[ @subscriber = ] N'pelanggan'
Nama Pelanggan. @subscriber adalah sysname, dengan default NULL
.
[ @subscriber_db = ] N'subscriber_db'
Nama database langganan. @subscriber_db adalah sysname, dengan default NULL
.
[ @subscription_type = ] N'subscription_type'
Jenis langganan. @subscription_type adalah nvarchar(15), dengan default push
.
- Jika
push
, langganan push ditambahkan dan Agen Penggabungan ditambahkan di Distributor. - Jika
pull
, langganan penarikan ditambahkan tanpa menambahkan Agen Penggabungan di Distributor.
Catatan
Langganan anonim tidak perlu menggunakan prosedur tersimpan ini.
[ @subscriber_type = ] N'subscriber_type'
Jenis Pelanggan. @subscriber_type adalah nvarchar(15), dan bisa menjadi salah satu nilai berikut.
Nilai | Deskripsi |
---|---|
local (default) |
Pelanggan yang hanya diketahui oleh Penerbit. |
global |
Pelanggan yang diketahui oleh semua server. |
Di SQL Server 2005 (9.x) dan versi yang lebih baru, langganan lokal disebut sebagai langganan klien, dan langganan global disebut sebagai langganan server.
[ @subscription_priority = ] subscription_priority
Angka yang menunjukkan prioritas untuk langganan. @subscription_priority nyata, dengan default NULL
. Untuk langganan lokal dan anonim, prioritasnya adalah 0.0
. Untuk langganan global, prioritasnya harus kurang dari 100.0
.
[ @sync_type = ] N'sync_type'
Jenis sinkronisasi langganan. @sync_type adalah nvarchar(15), dengan default automatic
.
- Jika
automatic
, skema dan data awal untuk tabel yang diterbitkan ditransfer ke Pelanggan terlebih dahulu. - Jika
none
, Pelanggan diasumsikan sudah memiliki skema dan data awal untuk tabel yang diterbitkan. Tabel dan data sistem selalu ditransfer.
Catatan
Sebaiknya jangan tentukan nilai none
.
[ @frequency_type = ] frequency_type
Nilai yang menunjukkan kapan Agen Penggabungan berjalan. @frequency_type int, dan bisa menjadi salah satu nilai berikut.
Nilai | Deskripsi |
---|---|
1 |
Satu kali |
4 |
Harian |
8 |
Mingguan |
10 |
Bulanan |
20 |
Bulanan, relatif terhadap interval frekuensi |
40 |
Ketika SQL Server Agent dimulai |
NULL (default) |
[ @frequency_interval = ] frequency_interval
Hari atau hari yang dijalankan Agen Penggabungan. @frequency_interval int, dan bisa menjadi salah satu nilai berikut.
Nilai | Deskripsi |
---|---|
1 |
Hari Minggu |
2 |
Senin |
3 |
Selasa |
4 |
Rabu |
5 |
Kamis |
6 |
Jumat |
7 |
Sabtu |
8 |
Hari |
9 |
Hari kerja |
10 |
Hari akhir pekan |
NULL (default) |
[ @frequency_relative_interval = ] frequency_relative_interval
Kemunculan penggabungan terjadwal dari interval frekuensi dalam setiap bulan. @frequency_relative_interval int, dan bisa menjadi salah satu nilai ini.
Nilai | Deskripsi |
---|---|
1 |
First |
2 |
Detik |
4 |
Ketiga |
8 |
Keempat |
16 |
Last |
NULL (default) |
[ @frequency_recurrence_factor = ] frequency_recurrence_factor
Faktor pengulangan yang digunakan oleh @frequency_type. @frequency_recurrence_factor int, dengan default NULL
.
[ @frequency_subday = ] frequency_subday
Unit untuk @frequency_subday_interval. @frequency_subday int, dan bisa menjadi salah satu nilai berikut.
Nilai | Deskripsi |
---|---|
1 |
Satu kali |
2 |
Detik |
4 |
Menit |
8 |
Jam |
NULL (default) |
[ @frequency_subday_interval = ] frequency_subday_interval
Frekuensi @frequency_subday terjadi di antara setiap penggabungan. @frequency_subday_interval int, dengan default NULL
.
[ @active_start_time_of_day = ] active_start_time_of_day
Waktu hari ketika Agen Penggabungan pertama kali dijadwalkan, diformat sebagai HHmmss
. @active_start_time_of_day int, dengan default NULL
.
[ @active_end_time_of_day = ] active_end_time_of_day
Waktu hari ketika Agen Penggabungan berhenti dijadwalkan, diformat sebagai HHmmss
. @active_end_time_of_day int, dengan default NULL
.
[ @active_start_date = ] active_start_date
Tanggal ketika Agen Penggabungan pertama kali dijadwalkan, diformat sebagai yyyyMMdd
. @active_start_date int, dengan default NULL
.
[ @active_end_date = ] active_end_date
Tanggal ketika Agen Penggabungan berhenti dijadwalkan, diformat sebagai yyyyMMdd
. @active_end_date int, dengan default NULL
.
[ @optional_command_line = ] N'optional_command_line'
Perintah opsional untuk dijalankan. @optional_command_line adalah nvarchar(4000), dengan default NULL
. Parameter ini digunakan untuk menambahkan perintah yang mengambil output dan menyimpannya ke file atau untuk menentukan file atau atribut konfigurasi.
[ @description = ] N'description'
Deskripsi singkat tentang langganan gabungan ini. @description adalah nvarchar(255), dengan default NULL
. Nilai ini ditampilkan oleh Monitor Replikasi di Friendly Name
kolom, yang dapat digunakan untuk mengurutkan langganan untuk publikasi yang dipantau.
[ @enabled_for_syncmgr = ] N'enabled_for_syncmgr'
Menentukan apakah langganan dapat disinkronkan melalui Microsoft Windows Synchronization Manager. @enabled_for_syncmgr adalah nvarchar(5), dengan default false
.
- Jika
false
, langganan tidak terdaftar di Synchronization Manager. - Jika
true
, langganan terdaftar di Synchronization Manager dan dapat disinkronkan tanpa memulai SQL Server Management Studio.
[ @offloadagent = ] offloadagent
Menentukan bahwa agen dapat diaktifkan dari jarak jauh. @offloadagent adalah bit, dengan default 0
.
Parameter ini tidak digunakan lagi dan dipertahankan untuk kompatibilitas skrip mundur.
[ @offloadserver = ] N'offloadserver'
Menentukan nama jaringan server yang akan digunakan untuk aktivasi agen jarak jauh. @offloadserver adalah sysname, dengan default NULL
.
[ @use_interactive_resolver = ] N'use_interactive_resolver'
Memungkinkan konflik diselesaikan secara interaktif untuk semua artikel yang memungkinkan resolusi interaktif. @use_interactive_resolver adalah nvarchar(5), dengan default false
.
[ @merge_job_name = ] N'merge_job_name'
Parameter ini tidak digunakan lagi dan tidak dapat diatur. @merge_job_name adalah sysname, dengan default NULL
.
[ @hostname = ] N'hostname'
Mengambil alih nilai yang dikembalikan oleh HOST_NAME ketika fungsi ini digunakan dalam klausul WHERE dari filter berparameter. @hostname adalah sysname, dengan default NULL
.
Penting
Untuk alasan performa, kami sarankan Anda tidak menerapkan fungsi ke nama kolom dalam klausa filter baris berparameter, seperti LEFT([MyColumn]) = SUSER_SNAME()
. Jika Anda menggunakan HOST_NAME dalam klausa filter dan mengambil alih nilai HOST_NAME, mungkin perlu mengonversi jenis data menggunakan CONVERT. Untuk informasi selengkapnya tentang praktik terbaik untuk kasus ini, lihat bagian "Mengganti nilai HOST_NAME() dalam topik Filter Berparameter - Filter Baris Berparameter.
Mengembalikan nilai kode
0
(berhasil) atau 1
(kegagalan).
Keterangan
sp_addmergesubscription
digunakan dalam replikasi penggabungan.
Ketika sp_addmergesubscription
dijalankan oleh anggota peran server tetap sysadmin untuk membuat langganan push, pekerjaan Agen Penggabungan dibuat dan dijalankan secara implisit di bawah akun layanan SQL Server Agent. Kami menyarankan agar Anda menjalankan sp_addmergepushsubscription_agent dan menentukan kredensial akun Windows khusus agen yang berbeda untuk @job_login dan @job_password. Untuk informasi selengkapnya, lihat Model Keamanan Agen Replikasi.
Contoh
-- This script uses sqlcmd scripting variables. They are in the form
-- $(MyVariable). For information about how to use scripting variables
-- on the command line and in SQL Server Management Studio, see the
-- "Executing Replication Scripts" section in the topic
-- "Programming Replication Using System Stored Procedures".
DECLARE @publication AS sysname;
DECLARE @subscriber AS sysname;
DECLARE @subscriptionDB AS sysname;
DECLARE @hostname AS sysname;
SET @publication = N'AdvWorksSalesOrdersMerge';
SET @subscriber = $(SubServer);
SET @subscriptionDB = N'AdventureWorksReplica';
SET @hostname = N'adventure-works\david8'
-- Add a push subscription to a merge publication.
USE [AdventureWorks2022];
EXEC sp_addmergesubscription
@publication = @publication,
@subscriber = @subscriber,
@subscriber_db = @subscriptionDB,
@subscription_type = N'push',
@hostname = @hostname;
--Add an agent job to synchronize the push subscription.
EXEC sp_addmergepushsubscription_agent
@publication = @publication,
@subscriber = @subscriber,
@subscriber_db = @subscriptionDB,
@job_login = $(Login),
@job_password = $(Password);
GO
Izin
Hanya anggota peran server tetap sysadmin atau peran database tetap db_owner yang dapat menjalankan sp_addmergesubscription
.