Bagikan melalui


sp_addmergepullsubscription (T-SQL)

Berlaku untuk:SQL ServerAzure SQL Managed Instance

Menambahkan langganan penarikan ke publikasi gabungan. Prosedur tersimpan ini dijalankan di Pelanggan pada database langganan.

Konvensi sintaks transact-SQL

Sintaks

sp_addmergepullsubscription
    [ @publication = ] N'publication'
    [ , [ @publisher = ] N'publisher' ]
    [ , [ @publisher_db = ] N'publisher_db' ]
    [ , [ @subscriber_type = ] N'subscriber_type' ]
    [ , [ @subscription_priority = ] subscription_priority ]
    [ , [ @sync_type = ] N'sync_type' ]
    [ , [ @description = ] N'description' ]
[ ; ]

Argumen

[ @publication = ] N'publikasi'

Nama publikasi. @publication adalah sysname, tanpa default.

[ @publisher = ] N'publisher'

Nama Publisher. @publisher adalah sysname, dengan default nama server lokal. Publisher harus berupa server yang valid.

[ @publisher_db = ] N'publisher_db'

Nama database Publisher. @publisher_db adalah sysname, dengan default NULL.

[ @subscriber_type = ] N'subscriber_type'

Jenis Pelanggan. @subscriber_type adalah nvarchar(15), dengan default local, dan bisa menjadi salah satu dari global, , localatau anonymous. 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

Prioritas langganan. @subscription_priority nyata, dengan default NULL. Untuk langganan lokal dan anonim, prioritasnya adalah 0.0. Prioritas digunakan oleh resolver default untuk memilih pemenang saat konflik terdeteksi. Untuk pelanggan global, prioritas langganan harus kurang dari 100, yang merupakan prioritas penerbit.

[ @sync_type = ] N'sync_type'

Jenis sinkronisasi langganan. @sync_type adalah nvarchar(15), dengan default automatic. Bisa automatic atau none. 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.

Sebaiknya tentukan nilai automatic.

[ @description = ] N'description'

Deskripsi singkat tentang langganan penarikan 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.

Mengembalikan nilai kode

0 (berhasil) atau 1 (kegagalan).

Keterangan

sp_addmergepullsubscription digunakan untuk replikasi penggabungan.

Jika menggunakan SQL Server Agent untuk menyinkronkan langganan, prosedur sp_addmergepullsubscription_agent tersimpan harus dijalankan di Pelanggan untuk membuat agen dan pekerjaan untuk disinkronkan dengan Publikasi.

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".

-- Execute this batch at the Subscriber.
DECLARE @publication AS sysname;
DECLARE @publisher AS sysname;
DECLARE @publicationDB AS sysname;
DECLARE @hostname AS sysname;
SET @publication = N'AdvWorksSalesOrdersMerge';
SET @publisher = $(PubServer);
SET @publicationDB = N'AdventureWorks2022';
SET @hostname = N'adventure-works\david8';

-- At the subscription database, create a pull subscription 
-- to a merge publication.
USE [AdventureWorks2022Replica]
EXEC sp_addmergepullsubscription 
  @publisher = @publisher, 
  @publication = @publication, 
  @publisher_db = @publicationDB;

-- Add an agent job to synchronize the pull subscription. 
EXEC sp_addmergepullsubscription_agent 
  @publisher = @publisher, 
  @publisher_db = @publicationDB, 
  @publication = @publication, 
  @distributor = @publisher, 
  @job_login = $(Login), 
  @job_password = $(Password),
  @hostname = @hostname;
GO
-- 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".

-- Publication must support anonymous Subscribers.
-- Execute this batch at the Subscriber.
DECLARE @publication AS sysname;
DECLARE @publisher AS sysname;
DECLARE @publicationDB AS sysname;
DECLARE @websyncurl AS sysname;
DECLARE @security_mode AS int;
DECLARE @login AS sysname;
DECLARE @password AS nvarchar(512);
SET @publication = N'AdvWorksSalesOrdersMergeWebSync';
SET @publisher = $(PubServer);
SET @publicationDB = N'AdventureWorks2022';
SET @websyncurl = 'https://' + $(WebServer) + '/WebSync';
SET @security_mode = 0; -- Basic Authentication for IIS
SET @login = $(Login);
SET @password = $(Password);

-- At the subscription database, create a pull subscription 
-- to a merge publication.
USE [AdventureWorks2022Replica]
EXEC sp_addmergepullsubscription 
    @publisher = @publisher, 
    @publication = @publication, 
    @publisher_db = @publicationDB,
    @subscriber_type = N'anonymous';

-- Add an agent job to synchronize the pull subscription. 
EXEC sp_addmergepullsubscription_agent 
    @publisher = @publisher, 
    @publisher_db = @publicationDB, 
    @publication = @publication, 
    @distributor = @publisher, 
    @job_login = @login, 
    @job_password = @password,
    @use_web_sync = 1,
    @internet_security_mode = @security_mode,
    @internet_url = @websyncurl,
    @internet_login = @login,
    @internet_password = @password;
GO

Izin

Hanya anggota peran server tetap sysadmin atau peran database tetap db_owner yang dapat menjalankan sp_addmergepullsubscription.