sp_addmergepushsubscription_agent (T-SQL)

Berlaku untuk:SQL ServerAzure SQL Managed Instance

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

Penting

Saat mengonfigurasi Penerbit dengan Distributor jarak jauh, nilai yang disediakan untuk semua parameter, termasuk job_login dan job_password, dikirim ke Distributor sebagai teks biasa. Anda harus mengenkripsi koneksi antara Publisher dan Distributor jarak jauhnya sebelum menjalankan prosedur tersimpan ini. Untuk informasi selengkapnya, lihat Mengonfigurasi Mesin Database SQL Server untuk mengenkripsi koneksi.

Konvensi sintaks transact-SQL

Catatan

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

Sintaks

sp_addmergepushsubscription_agent
    [ @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' ]
    [ , [ @publisher_security_mode = ] publisher_security_mode ]
    [ , [ @publisher_login = ] N'publisher_login' ]
    [ , [ @publisher_password = ] N'publisher_password' ]
    [ , [ @job_login = ] N'job_login' ]
    [ , [ @job_password = ] N'job_password' ]
    [ , [ @job_name = ] N'job_name' ]
    [ , [ @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 ]
    [ , [ @enabled_for_syncmgr = ] N'enabled_for_syncmgr' ]
[ ; ]

Argumen

[ @publication = ] N'publikasi'

Nama publikasi. @publication adalah sysname, tanpa default.

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

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

[ @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. Jika kata sandi pelanggan digunakan, kata sandi tersebut akan dienkripsi secara otomatis.

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.

[ @publisher_security_mode = ] publisher_security_mode

Mode keamanan yang digunakan saat menyambungkan ke Publisher saat menyinkronkan. @publisher_security_mode kecil, 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.

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

[ @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 Distributor dan untuk koneksi ke Pelanggan dan Penerbit saat menggunakan autentikasi Windows Integrated.

[ @job_password = ] N'job_password'

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.

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

[ @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
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-hari yang dijalankan Oleh 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 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 berikut.

Nilai Deskripsi
1 First
2 Detik
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 0.

[ @frequency_subday = ] frequency_subday

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

Nilai Deskripsi
1 Satu kali
2 Detik
4 Menit
8 Jam
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 0.

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

[ @active_start_date = ] active_start_date

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

[ @active_end_date = ] active_end_date

Tanggal ketika Agen Penggabungan berhenti dijadwalkan, diformat sebagai yyyyMMdd. @active_end_date int, dengan default 99991231.

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

Mengembalikan nilai kode

0 (berhasil) atau 1 (kegagalan).

Keterangan

sp_addmergepushsubscription_agent digunakan dalam replikasi penggabungan dan menggunakan fungsionalitas yang mirip dengan sp_addpushsubscription_agent.

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