sp_addpullsubscription_agent (Transact-SQL)

Berlaku untuk: SQL Server (semua versi yang didukung) Azure 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.

Ikon tautan topikKonvensi Sintaks Transact-SQL

Sintaks

  
sp_addpullsubscription_agent [ @publisher = ] 'publisher'  
    [ , [ @publisher_db = ] 'publisher_db' ]          , [ @publication = ] 'publication'  
    [ , [ @subscriber = ] 'subscriber' ]  
    [ , [ @subscriber_db = ] 'subscriber_db' ]  
    [ , [ @subscriber_security_mode = ] subscriber_security_mode ]  
    [ , [ @subscriber_login = ] 'subscriber_login' ]  
    [ , [ @subscriber_password = ] 'subscriber_password' ]  
    [ , [ @distributor = ] 'distributor' ]  
    [ , [ @distribution_db = ] 'distribution_db' ]  
    [ , [ @distributor_security_mode = ] distributor_security_mode ]  
    [ , [ @distributor_login = ] 'distributor_login' ]  
    [ , [ @distributor_password = ] 'distributor_password' ]  
    [ , [ @optional_command_line = ] '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 = ] 'enabled_for_syncmgr' ]  
    [ , [ @ftp_address = ] 'ftp_address' ]  
    [ , [ @ftp_port = ] ftp_port ]  
    [ , [ @ftp_login = ] 'ftp_login' ]  
    [ , [ @ftp_password = ] 'ftp_password' ]  
    [ , [ @alt_snapshot_folder = ] 'alternate_snapshot_folder' ]  
    [ , [ @working_directory = ] 'working_directory' ]  
    [ , [ @use_ftp = ] 'use_ftp' ]  
    [ , [ @publication_type = ] publication_type ]  
    [ , [ @dts_package_name = ] 'dts_package_name' ]  
    [ , [ @dts_package_password = ] 'dts_package_password' ]  
    [ , [ @dts_package_location = ] 'dts_package_location' ]  
    [ , [ @reserved = ] 'reserved' ]  
    [ , [ @offloadagent = ] 'remote_agent_activation' ]  
    [ , [ @offloadserver = ] 'remote_agent_server_name']  
    [ , [ @job_name = ] 'job_name' ]  
    [ , [ @job_login = ] 'job_login' ]   
    [ , [ @job_password = ] 'job_password' ]   

Argumen

[ @publisher = ] 'publisher' Adalah nama Penerbit. publisher adalah sysname, tanpa default.

Catatan

Nama server dapat ditentukan sebagai <Hostname>,<PortNumber>. Anda mungkin perlu menentukan nomor port untuk koneksi Anda ketika SQL Server disebarkan di Linux atau Windows dengan port kustom, dan layanan browser dinonaktifkan. Penggunaan nomor port kustom untuk distributor jarak jauh hanya berlaku untuk SQL Server 2019.

[ @publisher_db = ] 'publisher_db'_ Adalah nama database Penerbit. publisher_db adalah sysname, dengan nilai default NULL. publisher_db diabaikan oleh Oracle Publishers.

[ @publication = ] 'publication' Adalah nama publikasi. publikasi adalah sysname, tanpa default.

[ @subscriber = ] 'subscriber' Adalah nama instans Pelanggan atau nama pendengar AG jika database pelanggan berada dalam grup ketersediaan. pelanggan adalah sysname, dengan default NULL.

Catatan

Saat menjalankan sp_addpullsubscription_agent untuk pelanggan yang merupakan bagian dari Grup Ketersediaan AlwaysOn, perlu untuk meneruskan parameter @Subscriber sebagai nama pendengar AG. Jika Anda menjalankan SQL Server 2016 (13.x) dan versi yang lebih lama, atau SQL Server 2017 (14.x) sebelum CU16, prosedur tersimpan akan dijalankan tanpa mengembalikan kesalahan tetapi parameter @Subscriber pada pekerjaan Agen Distribusi tidak akan mereferensikan nama Pendengar AG; parameter akan dibuat dengan nama server pelanggan tempat perintah dijalankan. Untuk mengubah masalah ini, perbarui pekerjaan Agen Distribusi secara manual (pekerjaan Agen Distribusi@Subscriber parameter dengan nilai nama Pendengar AG.

Catatan

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

[ @subscriber_db = ] 'subscriber_db' Adalah 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 Apakah mode keamanan yang digunakan saat menyambungkan ke Pelanggan saat menyinkronkan. subscriber_security_modeint, 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 = ] 'subscriber_login' Apakah 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 = ] 'subscriber_password' Adalah 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 = ] 'distributor' Adalah nama Distributor. distributor adalah sysname, dengan default nilai yang ditentukan oleh penerbit.

[ @distribution_db = ] 'distribution_db' Adalah nama database distribusi. distribution_db adalah sysname, dengan nilai default NULL.

[ @distributor_security_mode = ] distributor_security_mode Apakah mode keamanan yang digunakan saat menyambungkan ke Distributor saat menyinkronkan. distributor_security_modeint, dengan default 1. 0 menentukan Autentikasi SQL Server. 1 menentukan Autentikasi Windows.

Penting

Jika memungkinkan, gunakan autentikasi Windows.

[ @distributor_login = ] 'distributor_login' Apakah login Distributor untuk digunakan saat menyambungkan ke Distributor saat menyinkronkan. distributor_login diperlukan jika distributor_security_mode diatur ke 0. distributor_login adalah sysname, dengan default NULL.

[ @distributor_password = ] 'distributor_password' Adalah 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 = ] 'optional_command_line' Adalah 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 Adalah frekuensi untuk menjadwalkan Agen Distribusi. frequency_typeadalah 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 parameter -Continuous untuk agen. Untuk informasi selengkapnya, lihat Agen Distribusi Replikasi.

[ @frequency_interval = ] frequency_interval Adalah nilai yang akan diterapkan ke frekuensi yang ditetapkan oleh frequency_type. frequency_intervalint, dengan default 1.

[ @frequency_relative_interval = ] frequency_relative_interval Adalah tanggal Agen Distribusi. Parameter ini digunakan ketika frequency_type diatur ke 32 (relatif bulanan). frequency_relative_intervaladalah int, dan bisa menjadi salah satu nilai berikut.

Nilai Deskripsi
1 (default) Pertama
2 Detik
4 Ketiga
8 Keempat
16 Terakhir

[ @frequency_recurrence_factor = ] frequency_recurrence_factor Adalah faktor pengulangan yang digunakan oleh frequency_type. frequency_recurrence_factorint, dengan default 1.

[ @frequency_subday = ] frequency_subday Apakah seberapa sering untuk menjadwal ulang selama periode yang ditentukan. frequency_subdayint, 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 Adalah interval untuk frequency_subday. frequency_subday_intervalint, dengan default 1.

[ @active_start_time_of_day = ] active_start_time_of_day Adalah waktu hari ketika Agen Distribusi pertama kali dijadwalkan, diformat sebagai HHMMSS. active_start_time_of_dayint, dengan default 0.

[ @active_end_time_of_day = ] active_end_time_of_day Adalah waktu hari ketika Agen Distribusi berhenti dijadwalkan, diformat sebagai HHMMSS. active_end_time_of_dayint, dengan default 0.

[ @active_start_date = ] active_start_date Adalah tanggal ketika Agen Distribusi pertama kali dijadwalkan, diformat sebagai YYYYMMDD. active_start_dateint, dengan default 0.

[ @active_end_date = ] active_end_date Adalah tanggal ketika Agen Distribusi berhenti dijadwalkan, diformat sebagai YYYYMMDD. active_end_dateint, dengan default 0.

[ @distribution_jobid = ] _distribution_jobidOUTPUT Adalah ID Agen Distribusi untuk pekerjaan ini. distribution_jobid adalah biner(16), dengan default NULL, dan merupakan parameter OUTPUT.

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

[ @enabled_for_syncmgr = ] 'enabled_for_syncmgr' 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 = ] 'ftp_address' Hanya untuk kompatibilitas mundur.

[ @ftp_port = ] ftp_port Hanya untuk kompatibilitas mundur.

[ @ftp_login = ] 'ftp_login' Hanya untuk kompatibilitas mundur.

[ @ftp_password = ] 'ftp_password' Hanya untuk kompatibilitas mundur.

[ @alt_snapshot_folder = ] 'alternate_snapshot_folder'_ Menentukan lokasi folder alternatif untuk rekam jepret. alternate_snapshot_folder adalah nvarchar(255), dengan default NULL.

[ @working_directory = ] 'working_director' Adalah 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 = ] '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 adalah tinyint 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 = ] '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 = ] '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 = ] 'dts_package_location' Menentukan lokasi paket. dts_package_location adalah nvarchar(12), dengan default pelanggan. Lokasi paket dapat berupa distributor atau pelanggan.

[ @reserved = ] 'reserved'

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

[ @offloadagent = ] 'remote_agent_activation'

Catatan

Aktivasi agen jarak jauh tidak digunakan lagi dan tidak lagi didukung. Parameter ini hanya didukung untuk mempertahankan kompatibilitas skrip mundur. Mengatur remote_agent_activation ke nilai selain false akan menghasilkan kesalahan.

[ @offloadserver = ] 'remote_agent_server_name'

Catatan

Aktivasi agen jarak jauh tidak digunakan lagi dan tidak lagi didukung. Parameter ini hanya didukung untuk mempertahankan kompatibilitas skrip mundur. Mengatur remote_agent_server_name ke nilai non-NULL apa pun akan menghasilkan kesalahan.

[ @job_name = ] 'job_name' Adalah nama pekerjaan agen yang ada. job_name adalah sysname, dengan nilai 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.

[ @job_login = ] 'job_login' Apakah 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 = ] 'job_password' Adalah kata sandi untuk akun Windows tempat agen berjalan. job_password adalah sysname, tanpa default.

Penting

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'AdventureWorks2012';

-- At the subscription database, create a pull subscription 
-- to a transactional publication.
USE [AdventureWorks2012Replica]
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 dijalankan sp_addpullsubscription_agent.

Lihat juga

Membuat Langganan Pull
Berlangganan Publikasi
sp_addpullsubscription (Transact-SQL)
sp_change_subscription_properties (Transact-SQL)
sp_droppullsubscription (Transact-SQL)
sp_helppullsubscription (Transact-SQL)
sp_helpsubscription_properties (Transact-SQL)