sp_addpullsubscription_agent (T-SQL)

Berlaku untuk:SQL ServerAzure SQL Managed Instance

Menambahkan pekerjaan agen terjadwal baru yang digunakan untuk menyinkronkan langganan penarikan ke publikasi transaksional. Prosedur tersimpan ini dijalankan di Pelanggan pada database langganan.

Konvensi sintaks transact-SQL

Sintaks

sp_addpullsubscription_agent
    [ @publisher = ] N'publisher'
    [ , [ @publisher_db = ] N'publisher_db' ]
    , [ @publication = ] N'publication'
    [ , [ @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' ]
    [ , [ @distribution_db = ] N'distribution_db' ]
    [ , [ @distributor_security_mode = ] distributor_security_mode ]
    [ , [ @distributor_login = ] N'distributor_login' ]
    [ , [ @distributor_password = ] N'distributor_password' ]
    [ , [ @optional_command_line = ] N'optional_command_line' ]
    [ , [ @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 ]
    [ , [ @distribution_jobid = ] distribution_jobid OUTPUT ]
    [ , [ @encrypted_distributor_password = ] encrypted_distributor_password ]
    [ , [ @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' ]
    [ , [ @publication_type = ] publication_type ]
    [ , [ @dts_package_name = ] N'dts_package_name' ]
    [ , [ @dts_package_password = ] N'dts_package_password' ]
    [ , [ @dts_package_location = ] N'dts_package_location' ]
    [ , [ @reserved = ] N'reserved' ]
    [ , [ @offloadagent = ] N'offloadagent' ]
    [ , [ @offloadserver = ] N'offloadserver' ]
    [ , [ @job_name = ] N'job_name' ]
    [ , [ @job_login = ] N'job_login' ]
    [ , [ @job_password = ] N'job_password' ]
[ ; ]

Argumen

[ @publisher = ] N'publisher'

Nama Publisher. @publisher adalah sysname, tanpa default.

Catatan

Nama server dapat ditentukan sebagai <Hostname>,<PortNumber>. Tentukan nomor port untuk koneksi Anda saat SQL Server disebarkan di Linux atau Windows dengan port kustom, dan layanan browser dinonaktifkan. Penggunaan nomor port kustom untuk distributor jarak jauh berlaku untuk SQL Server 2019 (15.x) dan versi yang lebih baru.

[ @publisher_db = ] N'publisher_db'

Nama database Publisher. @publisher_db adalah sysname, dengan default NULL. @publisher_db diabaikan oleh Oracle Publishers.

[ @publication = ] N'publikasi'

Nama publikasi. @publication adalah sysname, tanpa default.

[ @subscriber = ] N'pelanggan'

Nama instans Pelanggan atau nama pendengar AG jika database pelanggan berada dalam grup ketersediaan. @subscriber adalah sysname, dengan default NULL.

Catatan

Parameter ini tidak digunakan lagi dan dipertahankan untuk kompatibilitas skrip mundur.

Saat menjalankan sp_addpullsubscription_agent pelanggan yang merupakan bagian dari AG, atur @subscriber ke nama pendengar AG. Jika Anda menjalankan SQL Server 2016 (13.x) dan versi yang lebih lama, atau SQL Server 2017 (14.x) sebelum CU 16, prosedur tersimpan dijalankan tanpa mengembalikan kesalahan, tetapi parameter @subscriber pada Agen Distribusi Replikasi tidak mereferensikan nama pendengar AG; parameter dibuat dengan nama server pelanggan tempat perintah dijalankan. Untuk mengubah masalah ini, perbarui pekerjaan Agen Distribusi secara manual@subscriber parameter dengan nilai nama pendengar AG.

[ @subscriber_db = ] N'subscriber_db'

Nama database langganan. @subscriber_db adalah sysname, dengan default NULL.

Catatan

Parameter ini tidak digunakan lagi dan dipertahankan untuk kompatibilitas skrip mundur.

[ @subscriber_security_mode = ] subscriber_security_mode

Mode keamanan yang digunakan saat menyambungkan ke Pelanggan saat menyinkronkan. @subscriber_security_mode int, dengan default NULL.

  • 0 menentukan autentikasi SQL Server
  • 1 menentukan autentikasi Windows

Catatan

Parameter ini tidak digunakan lagi dan dipertahankan untuk kompatibilitas skrip mundur. Agen Distribusi selalu tersambung ke Pelanggan lokal menggunakan Autentikasi Windows. Jika nilai selain NULL atau 1 ditentukan untuk parameter ini, pesan peringatan akan dikembalikan.

[ @subscriber_login = ] N'subscriber_login'

Login Pelanggan untuk digunakan saat menyambungkan ke Pelanggan saat menyinkronkan. @subscriber_login adalah sysname, dengan default NULL.

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. subscriber_password diperlukan jika subscriber_security_mode diatur ke 0. @subscriber_password adalah sysname, dengan default NULL. Jika kata sandi pelanggan digunakan, kata sandi tersebut akan dienkripsi secara otomatis.

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 nilai yang ditentukan oleh @publisher.

[ @distribution_db = ] N'distribution_db'

Nama database distribusi. @distribution_db adalah sysname, dengan default NULL.

[ @distributor_security_mode = ] distributor_security_mode

Catatan

ID Microsoft Entra sebelumnya dikenal sebagai Azure Active Directory (Azure AD).

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 yang dimulai dengan SQL Server 2022 (16.x) CU 6.
  • 3 menentukan autentikasi terintegrasi Microsoft Entra yang dimulai dengan SQL Server 2022 (16.x) CU 6.
  • 4 menentukan autentikasi token Microsoft Entra yang 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 diperlukan jika distributor_security_mode diatur ke 0. @distributor_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.

[ @optional_command_line = ] N'optional_command_line'

Prompt perintah opsional yang diberikan ke Agen Distribusi. Misalnya, -DefinitionFile C:\Distdef.txt atau -CommitBatchSize 10. @optional_command_line adalah nvarchar(4000), dengan default string kosong.

[ @frequency_type = ] frequency_type

Frekuensi untuk menjadwalkan Agen Distribusi. @frequency_type int, dan bisa menjadi salah satu nilai berikut.

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

Catatan

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

[ @frequency_interval = ] frequency_interval

Nilai yang akan diterapkan ke frekuensi yang ditetapkan oleh @frequency_type. @frequency_interval int, dengan default 1.

[ @frequency_relative_interval = ] frequency_relative_interval

Tanggal Agen Distribusi. Parameter ini digunakan ketika @frequency_type diatur ke 32 (relatif bulanan). @frequency_relative_interval int, dan bisa menjadi salah satu nilai berikut.

Nilai Deskripsi
1 (default) First
2 Detik
4 Ketiga
8 Keempat
16 Last

[ @frequency_recurrence_factor = ] frequency_recurrence_factor

Faktor pengulangan yang digunakan oleh @frequency_type. @frequency_recurrence_factor int, dengan default 1.

[ @frequency_subday = ] frequency_subday

Menentukan seberapa sering untuk menjadwalkan ulang selama periode yang ditentukan. @frequency_subday int, dan bisa menjadi salah satu nilai berikut.

Nilai Deskripsi
1 (default) Satu kali
2 Detik
4 Menit
8 Jam

[ @frequency_subday_interval = ] frequency_subday_interval

Interval untuk @frequency_subday. @frequency_subday_interval int, dengan default 1.

[ @active_start_time_of_day = ] active_start_time_of_day

Waktu hari ketika Agen Distribusi pertama kali dijadwalkan, diformat sebagai HHmmss. @active_start_time_of_day int, dengan default 0.

[ @active_end_time_of_day = ] active_end_time_of_day

Waktu hari ketika Agen Distribusi berhenti dijadwalkan, diformat sebagai HHmmss. @active_end_time_of_day int, dengan default 0.

[ @active_start_date = ] active_start_date

Tanggal ketika Agen Distribusi pertama kali dijadwalkan, diformat sebagai yyyyMMdd. @active_start_date int, dengan default 0.

[ @active_end_date = ] active_end_date

Tanggal ketika Agen Distribusi berhenti dijadwalkan, diformat sebagai yyyyMMdd. @active_end_date int, dengan default 0.

[ @distribution_jobid = ] distribution_jobid OUTPUT

ID Agen Distribusi untuk pekerjaan ini. @distribution_jobid adalah parameter OUTPUT jenis biner(16), dengan default NULL.

[ @encrypted_distributor_password = ] encrypted_distributor_password

@encrypted_distributor_password adalah bit, dengan default 0.

Catatan

Pengaturan @encrypted_distributor_password tidak lagi didukung. Mencoba mengatur parameter bit ini ke 1 akan mengakibatkan kesalahan.

[ @enabled_for_syncmgr = ] N'enabled_for_syncmgr'

Menentukan apakah langganan dapat disinkronkan melalui Microsoft 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.

[ @ftp_address = ] N'ftp_address'

Parameter ini tidak digunakan lagi dan dipertahankan untuk kompatibilitas skrip mundur.

[ @ftp_port = ] ftp_port

Parameter ini tidak digunakan lagi dan dipertahankan untuk kompatibilitas skrip mundur.

[ @ftp_login = ] N'ftp_login'

Parameter ini tidak digunakan lagi dan dipertahankan untuk kompatibilitas skrip mundur.

[ @ftp_password = ] N'ftp_password'

Parameter ini tidak digunakan lagi dan dipertahankan untuk kompatibilitas skrip mundur.

[ @alt_snapshot_folder = ] N'alt_snapshot_folder'

Menentukan lokasi folder alternatif untuk rekam jepret. @alt_snapshot_folder adalah nvarchar(255), dengan default NULL.

[ @working_directory = ] N'working_directory'

Nama direktori kerja yang digunakan untuk menyimpan data dan file skema untuk publikasi. @working_directory adalah nvarchar(255), dengan default NULL. Nama harus ditentukan dalam format UNC.

[ @use_ftp = ] N'use_ftp'

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

[ @publication_type = ] publication_type

Menentukan jenis replikasi publikasi. @publication_type kecil, dengan default 0.

  • Jika 0, publikasi adalah jenis transaksi.
  • Jika 1, publikasi adalah jenis rekam jepret.
  • Jika 2, publikasi adalah jenis penggabungan.

[ @dts_package_name = ] N'dts_package_name'

Menentukan nama paket DTS. @dts_package_name adalah sysname, dengan default NULL. Misalnya, untuk menentukan paket DTSPub_Package, parameternya adalah @dts_package_name = N'DTSPub_Package'.

[ @dts_package_password = ] N'dts_package_password'

Menentukan kata sandi pada paket, jika ada. @dts_package_password adalah sysname, dengan default NULL, yang berarti kata sandi tidak ada di paket.

Catatan

Anda harus menentukan kata sandi jika @dts_package_name ditentukan.

[ @dts_package_location = ] N'dts_package_location'

Menentukan lokasi paket. @dts_package_location adalah nvarchar(12), dengan default subscriber. Lokasi paket bisa atau distributorsubscriber.

[ @reserved = ] N'reserved'

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

[ @offloadagent = ] N'offloadagent'

Parameter ini tidak digunakan lagi dan dipertahankan untuk kompatibilitas skrip mundur. Jika nilai ditentukan untuk parameter ini, pesan peringatan dikembalikan, tetapi nilainya diabaikan. Mengatur @offloadagent ke nilai selain false menghasilkan kesalahan.

[ @offloadserver = ] N'offloadserver'

Parameter ini tidak digunakan lagi dan dipertahankan untuk kompatibilitas skrip mundur. Jika nilai ditentukan untuk parameter ini, pesan peringatan dikembalikan, tetapi nilainya diabaikan. Mengatur @offloadserver ke nilai selain false 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 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.

[ @job_login = ] N'job_login'

Login untuk akun Windows tempat agen berjalan. @job_login adalah nvarchar(257), tanpa default. Akun Windows ini selalu digunakan untuk koneksi agen ke Pelanggan.

[ @job_password = ] N'job_password'

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

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.

Mengembalikan nilai kode

0 (berhasil) atau 1 (kegagalan).

Keterangan

sp_addpullsubscription_agent digunakan dalam replikasi rekam jepret dan replikasi transaksional.

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;
SET @publication = N'AdvWorksProductTran';
SET @publisher = $(PubServer);
SET @publicationDB = N'AdventureWorks2022';

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

-- Add an agent job to synchronize the pull subscription.
EXEC sp_addpullsubscription_agent 
  @publisher = @publisher, 
  @publisher_db = @publicationDB, 
  @publication = @publication, 
  @distributor = @publisher, 
  @job_login = $(Login), 
  @job_password = $(Password);
GO

Izin

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