sp_addmergesubscription (T-SQL)

Berlaku untuk:SQL ServerAzure SQL Managed Instance

Membuat langganan penggabungan push atau pull. Prosedur tersimpan ini dijalankan di Publisher pada database publikasi.

Konvensi sintaks transact-SQL

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 Day
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 Second
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 Second
4 Minute
8 Hour
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.