sp_addmergepullsubscription_agent (T-SQL)

Berlaku untuk:SQL ServerAzure SQL Managed Instance

Menambahkan pekerjaan agen baru yang digunakan untuk menjadwalkan sinkronisasi langganan penarikan ke publikasi gabungan. Prosedur tersimpan ini dijalankan di Pelanggan pada database langganan.

Konvensi sintaks transact-SQL

Sintaks

sp_addmergepullsubscription_agent
    [ [ @name = ] N'name' ]
    , [ @publisher = ] N'publisher'
    , [ @publisher_db = ] N'publisher_db'
    , [ @publication = ] N'publication'
    [ , [ @publisher_security_mode = ] publisher_security_mode ]
    [ , [ @publisher_login = ] N'publisher_login' ]
    [ , [ @publisher_password = ] N'publisher_password' ]
    [ , [ @publisher_encrypted_password = ] publisher_encrypted_password ]
    [ , [ @subscriber = ] N'subscriber' ]
    [ , [ @subscriber_db = ] N'subscriber_db' ]
    [ , [ @subscriber_security_mode = ] subscriber_security_mode ]
    [ , [ @subscriber_login = ] N'subscriber_login' ]
    [ , [ @subscriber_password = ] N'subscriber_password' ]
    [ , [ @distributor = ] N'distributor' ]
    [ , [ @distributor_security_mode = ] distributor_security_mode ]
    [ , [ @distributor_login = ] N'distributor_login' ]
    [ , [ @distributor_password = ] N'distributor_password' ]
    [ , [ @encrypted_password = ] encrypted_password ]
    [ , [ @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' ]
    [ , [ @merge_jobid = ] merge_jobid OUTPUT ]
    [ , [ @enabled_for_syncmgr = ] N'enabled_for_syncmgr' ]
    [ , [ @ftp_address = ] N'ftp_address' ]
    [ , [ @ftp_port = ] ftp_port ]
    [ , [ @ftp_login = ] N'ftp_login' ]
    [ , [ @ftp_password = ] N'ftp_password' ]
    [ , [ @alt_snapshot_folder = ] N'alt_snapshot_folder' ]
    [ , [ @working_directory = ] N'working_directory' ]
    [ , [ @use_ftp = ] N'use_ftp' ]
    [ , [ @reserved = ] N'reserved' ]
    [ , [ @use_interactive_resolver = ] N'use_interactive_resolver' ]
    [ , [ @offloadagent = ] N'offloadagent' ]
    [ , [ @offloadserver = ] N'offloadserver' ]
    [ , [ @job_name = ] N'job_name' ]
    [ , [ @dynamic_snapshot_location = ] N'dynamic_snapshot_location' ]
    [ , [ @use_web_sync = ] use_web_sync ]
    [ , [ @internet_url = ] N'internet_url' ]
    [ , [ @internet_login = ] N'internet_login' ]
    [ , [ @internet_password = ] N'internet_password' ]
    [ , [ @internet_security_mode = ] internet_security_mode ]
    [ , [ @internet_timeout = ] internet_timeout ]
    [ , [ @hostname = ] N'hostname' ]
    [ , [ @job_login = ] N'job_login' ]
    [ , [ @job_password = ] N'job_password' ]
[ ; ]

Argumen

[ @name = ] N'name'

Nama agen. @name adalah sysname, dengan default NULL.

[ @publisher = ] N'publisher'

Nama server Publisher. @publisher adalah sysname, tanpa default.

[ @publisher_db = ] N'publisher_db'

Nama database Publisher. @publisher_db adalah sysname, tanpa default.

[ @publication = ] N'publikasi'

Nama publikasi. @publication adalah sysname, tanpa default.

[ @publisher_security_mode = ] publisher_security_mode

Mode keamanan yang digunakan saat menyambungkan ke Publisher saat menyinkronkan. @publisher_security_mode int, dengan default 1. Nilai berikut menentukan mode keamanan:

  • 0 menentukan autentikasi SQL Server.
  • 1 menentukan autentikasi Windows.
  • 2 menentukan autentikasi kata sandi Microsoft Entra, dimulai dengan SQL Server 2022 (16.x) CU 6.
  • 3 menentukan autentikasi terintegrasi Microsoft Entra, dimulai dengan SQL Server 2022 (16.x) CU 6.

Penting

Jika memungkinkan, gunakan autentikasi Windows.

[ @publisher_login = ] N'publisher_login'

Login yang digunakan saat menyambungkan ke Publisher saat menyinkronkan. @publisher_login adalah sysname, dengan default NULL.

[ @publisher_password = ] N'publisher_password'

Kata sandi yang digunakan saat menyambungkan ke Publisher. @publisher_password adalah sysname, dengan default NULL.

Penting

Jangan gunakan kata sandi kosong. Gunakan kata sandi yang kuat. Jika memungkinkan, minta pengguna untuk memasukkan kredensial keamanan saat runtime. Jika Anda harus menyimpan kredensial dalam file skrip, Anda harus mengamankan file untuk mencegah akses yang tidak sah.

[ @publisher_encrypted_password = ] publisher_encrypted_password

Pengaturan @publisher_encrypted_password tidak lagi didukung. Mencoba mengatur parameter bit ini untuk 1 menghasilkan kesalahan.

[ @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.

[ @subscriber_security_mode = ] subscriber_security_mode

Mode keamanan yang digunakan saat menyambungkan ke Pelanggan saat menyinkronkan. @subscriber_security_mode int, dengan default 1. Jika 0, menentukan Autentikasi SQL Server. Jika 1, menentukan Autentikasi Windows.

Catatan

Parameter ini tidak digunakan lagi dan dipertahankan untuk kompatibilitas skrip mundur. Jika nilai ditentukan untuk parameter ini, pesan peringatan dikembalikan, tetapi nilainya diabaikan.

[ @subscriber_login = ] N'subscriber_login'

Login Pelanggan untuk digunakan saat menyambungkan ke Pelanggan saat menyinkronkan. @subscriber_login adalah sysname, dengan default NULL. @subscriber_login diperlukan jika subscriber_security_mode diatur ke 0.

Catatan

Parameter ini tidak digunakan lagi dan dipertahankan untuk kompatibilitas skrip mundur. Jika nilai ditentukan untuk parameter ini, pesan peringatan dikembalikan, tetapi nilainya diabaikan.

[ @subscriber_password = ] N'subscriber_password'

Kata sandi Pelanggan untuk Autentikasi SQL Server. @subscriber_password adalah sysname, dengan default NULL. @subscriber_password diperlukan jika @subscriber_security_mode diatur ke 0.

Catatan

Parameter ini tidak digunakan lagi dan dipertahankan untuk kompatibilitas skrip mundur. Jika nilai ditentukan untuk parameter ini, pesan peringatan dikembalikan, tetapi nilainya diabaikan.

[ @distributor = ] N'distributor'

Nama Distributor. @distributor adalah sysname, dengan default @publisher; artinya, Publisher juga merupakan Distributor.

[ @distributor_security_mode = ] distributor_security_mode

Mode keamanan yang digunakan saat menyambungkan ke Distributor saat menyinkronkan. @distributor_security_mode int, dengan default 1. Nilai berikut menentukan mode keamanan:

  • 0 menentukan autentikasi SQL Server.
  • 1 menentukan autentikasi Windows.
  • 2 menentukan autentikasi kata sandi Microsoft Entra, dimulai dengan SQL Server 2022 (16.x) CU 6.
  • 3 menentukan autentikasi terintegrasi Microsoft Entra, dimulai dengan SQL Server 2022 (16.x) CU 6.
  • 4 menentukan autentikasi token Microsoft Entra, dimulai dengan SQL Server 2022 (16.x) CU 6.

Penting

Jika memungkinkan, gunakan autentikasi Windows.

[ @distributor_login = ] N'distributor_login'

Login Distributor untuk digunakan saat menyambungkan ke Distributor saat menyinkronkan. @distributor_login adalah sysname, dengan default NULL. @distributor_login diperlukan jika @distributor_security_mode diatur ke 0.

[ @distributor_password = ] N'distributor_password'

Kata sandi Distributor. @distributor_password adalah sysname, dengan default NULL. @distributor_password diperlukan jika @distributor_security_mode diatur ke 0.

Penting

Jangan gunakan kata sandi kosong. Gunakan kata sandi yang kuat. Jika memungkinkan, minta pengguna untuk memasukkan kredensial keamanan saat runtime. Jika Anda harus menyimpan kredensial dalam file skrip, Anda harus mengamankan file untuk mencegah akses yang tidak sah.

[ @encrypted_password = ] encrypted_password

Pengaturan @encrypted_password tidak lagi didukung. Mencoba mengatur parameter bit ini untuk 1 menghasilkan kesalahan.

[ @frequency_type = ] frequency_type

Nilai yang menunjukkan kapan Agen Penggabungan berjalan. @frequency_type int, dan bisa menjadi salah satu nilai ini.

Nilai Deskripsi
1 Satu kali
2 Sesuai permintaan
4 Harian
8 Mingguan
16 Bulanan
32 Relatif bulanan
64 Autostart
128 Berulang
NULL (default)

Catatan

Menentukan nilai 64 menyebabkan Agen Penggabungan berjalan dalam mode berkelanjutan. Ini sesuai dengan pengaturan -Continuous parameter untuk agen. Untuk informasi selengkapnya, lihat Agen Penggabungan Replikasi.

[ @frequency_interval = ] frequency_interval

Hari atau hari yang dijalankan Agen Penggabungan. @frequency_interval int, dengan default NULL, dan dapat menjadi salah satu nilai ini.

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

Tanggal Agen Penggabungan. Parameter ini digunakan ketika @frequency_type diatur ke 32 (relatif bulanan). @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

Seberapa sering untuk menjadwalkan ulang selama periode yang ditentukan. @frequency_subday int, dan bisa menjadi salah satu nilai ini.

Nilai Deskripsi
1 Satu kali
2 Second
4 Minute
8 Hour
NULL (default)

[ @frequency_subday_interval = ] frequency_subday_interval

Interval untuk @frequency_subday. @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'

Prompt perintah opsional yang disediakan ke Agen Penggabungan. @optional_command_line adalah nvarchar(255), dengan default string kosong.

Dapat digunakan untuk menyediakan parameter tambahan ke Agen Penggabungan, seperti dalam contoh berikut yang meningkatkan batas waktu kueri default menjadi 600 detik:

@optional_command_line = N'-QueryTimeOut 600'

[ @merge_jobid = ] merge_jobid OUTPUT

Parameter output untuk ID pekerjaan. @merge_jobid adalah parameter OUTPUT jenis biner(16), dengan default NULL.

[ @enabled_for_syncmgr = ] N'enabled_for_syncmgr'

Menentukan apakah langganan dapat disinkronkan melalui Pengelola Sinkronisasi Windows. @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.

[ @ftp_address = ] N'ftp_address'

Hanya untuk kompatibilitas mundur.

[ @ftp_port = ] ftp_port

Hanya untuk kompatibilitas mundur.

[ @ftp_login = ] N'ftp_login'

Hanya untuk kompatibilitas mundur.

[ @ftp_password = ] N'ftp_password'

Hanya untuk kompatibilitas mundur.

[ @alt_snapshot_folder = ] N'alt_snapshot_folder'

Menentukan lokasi tempat mengambil file rekam jepret. @alt_snapshot_folder adalah nvarchar(255), dengan default NULL. Jika NULL, file rekam jepret akan diambil dari lokasi default yang ditentukan oleh Publisher.

[ @working_directory = ] N'working_directory'

Nama direktori kerja yang digunakan untuk menyimpan sementara data dan file skema untuk publikasi saat FTP digunakan untuk mentransfer file rekam jepret. @working_directory adalah nvarchar(255), dengan default NULL.

[ @use_ftp = ] N'use_ftp'

Menentukan penggunaan FTP alih-alih protokol umum untuk mengambil rekam jepret. @use_ftp adalah nvarchar(5), dengan default false.

[ @reserved = ] N'reserved'

Diidentifikasi hanya untuk tujuan informasi. Tidak didukung. Kompatibilitas di masa mendatang tidak dijamin.

[ @use_interactive_resolver = ] N'use_interactive_resolver'

Menggunakan resolver interaktif untuk mengatasi konflik untuk semua artikel yang memungkinkan resolusi interaktif. @use_interactive_resolver adalah nvarchar(5), dengan default false.

[ @offloadagent = ] N'offloadagent'

Catatan

Parameter ini tidak digunakan lagi dan dipertahankan untuk kompatibilitas skrip mundur. Mengatur remote_agent_activation ke nilai selain false menghasilkan kesalahan.

[ @offloadserver = ] N'offloadserver'

Catatan

Parameter ini tidak digunakan lagi dan dipertahankan untuk kompatibilitas skrip mundur. Mengatur remote_agent_server_name ke nilai non-NULL apa pun akan menghasilkan kesalahan.

[ @job_name = ] N'job_name'

Nama pekerjaan agen yang ada. @job_name adalah sysname, dengan default NULL. Parameter ini hanya ditentukan ketika langganan akan disinkronkan menggunakan pekerjaan yang ada alih-alih pekerjaan yang baru dibuat (default). Jika Anda bukan anggota peran server tetap sysadmin , Anda harus menentukan @job_login dan @job_password saat menentukan @job_name.

[ @dynamic_snapshot_location = ] N'dynamic_snapshot_location'

Jalur ke folder tempat file rekam jepret akan dibaca jika rekam jepret data yang difilter akan digunakan. @dynamic_snapshot_location adalah nvarchar(260), dengan default NULL. Untuk informasi selengkapnya, lihat Filter Berparameter - Filter Baris Berparameter.

[ @use_web_sync = ] use_web_sync

Menunjukkan bahwa sinkronisasi Web diaktifkan. @use_web_sync adalah bit, dengan default 0. 1 menentukan bahwa langganan penarikan dapat disinkronkan melalui internet menggunakan HTTP.

[ @internet_url = ] N'internet_url'

Lokasi pendengar replikasi (REPLISAPI.DLL) untuk sinkronisasi Web. @internet_url adalah nvarchar(260), dengan default NULL. @internet_url adalah URL yang sepenuhnya memenuhi syarat, dalam format http://server.domain.com/directory/replisapi.dll. Jika server dikonfigurasi untuk mendengarkan port selain port 80, nomor port juga harus disediakan dalam format http://server.domain.com:<portnumber>/directory/replisapi.dll, di mana <portnumber> mewakili port.

[ @internet_login = ] N'internet_login'

Login yang digunakan Agen Penggabungan saat menyambungkan ke server Web yang menghosting sinkronisasi Web menggunakan Autentikasi Dasar HTTP. @internet_login adalah sysname, dengan default NULL.

[ @internet_password = ] N'internet_password'

Kata sandi yang digunakan Agen Penggabungan saat menyambungkan ke server Web yang menghosting sinkronisasi Web menggunakan Autentikasi Dasar HTTP. @internet_password adalah nvarchar(524), dengan default NULL.

Penting

Jangan gunakan kata sandi kosong. Gunakan kata sandi yang kuat.

[ @internet_security_mode = ] internet_security_mode

Metode autentikasi yang digunakan oleh Agen Penggabungan saat menyambungkan ke server Web selama sinkronisasi Web menggunakan HTTPS. @internet_security_mode int, dan bisa menjadi salah satu nilai ini.

Nilai Deskripsi
0 Autentikasi Dasar digunakan.
1 (default) Autentikasi Terintegrasi Windows digunakan.

Catatan

Sebaiknya gunakan Autentikasi Dasar dengan sinkronisasi Web. Untuk menggunakan sinkronisasi Web, Anda harus membuat koneksi TLS ke server Web. Untuk informasi selengkapnya, lihat Mengonfigurasi Sinkronisasi Web.

[ @internet_timeout = ] internet_timeout

Lamanya waktu, dalam detik, sebelum permintaan sinkronisasi Web kedaluwarsa. @internet_timeout int, dengan default 300 detik.

[ @hostname = ] N'hostname'

Mengambil alih nilai HOST_NAME() kapan fungsi ini digunakan dalam WHERE klausul filter berparameter. @hostname adalah sysname, dengan default NULL.

[ @job_login = ] N'job_login'

Login untuk akun Windows tempat agen berjalan. @job_login adalah nvarchar(257), dengan default NULL. Akun Windows ini selalu digunakan untuk koneksi agen ke Pelanggan dan untuk koneksi ke Distributor dan Publisher saat menggunakan autentikasi Windows Integrated.

[ @job_password = ] N'job_password'

Kata sandi untuk akun Windows tempat agen berjalan. @job_password adalah sysname, dengan default NULL.

Perhatian

Jangan simpan informasi autentikasi dalam file skrip. Untuk keamanan terbaik, nama login dan kata sandi harus disediakan saat runtime.

Mengembalikan nilai kode

0 (berhasil) atau 1 (kegagalan).

Keterangan

sp_addmergepullsubscription_agent digunakan dalam replikasi penggabungan dan menggunakan fungsionalitas yang mirip dengan sp_addpullsubscription_agent.

Untuk contoh cara menentukan pengaturan keamanan dengan benar saat menjalankan sp_addmergepullsubscription_agent, lihat Membuat Langganan Pull.

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

Izin

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