Bagikan melalui


sp_link_publication (T-SQL)

Berlaku untuk: SQL Server

Mengatur informasi konfigurasi dan keamanan yang digunakan oleh pemicu sinkronisasi pembaruan langganan segera saat menyambungkan ke Publisher. Prosedur tersimpan ini dijalankan di Pelanggan pada database langganan.

Penting

Saat Anda mengonfigurasi Publisher 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

Sintaks

sp_link_publication
    [ @publisher = ] N'publisher'
    , [ @publisher_db = ] N'publisher_db'
    , [ @publication = ] N'publication'
    , [ @security_mode = ] security_mode
    [ , [ @login = ] N'login' ]
    [ , [ @password = ] N'password' ]
    [ , [ @distributor = ] N'distributor' ]
[ ; ]

Argumen

[ @publisher = ] N'publisher'

Nama Publisher yang akan ditautkan. @publisher adalah sysname, tanpa default.

[ @publisher_db = ] N'publisher_db'

Nama database Publisher yang akan ditautkan. @publisher_db adalah sysname, tanpa default.

[ @publication = ] N'publikasi'

Nama publikasi yang akan ditautkan. @publication adalah sysname, tanpa default.

[ @security_mode = ] security_mode

Mode keamanan yang digunakan oleh Pelanggan untuk menyambungkan ke Publisher jarak jauh untuk segera diperbarui. @security_mode int, dan bisa menjadi salah satu nilai ini. Jika memungkinkan, gunakan autentikasi Windows.

Nilai Deskripsi
0 Menggunakan Autentikasi SQL Server dengan login yang ditentukan dalam prosedur tersimpan ini sebagai @login dan @password.

Catatan: Dalam versi SQL Server sebelumnya, opsi ini digunakan untuk menentukan panggilan prosedur jarak jauh dinamis (RPC).
1 Menggunakan konteks keamanan (Autentikasi SQL Server atau Autentikasi Windows) pengguna yang melakukan perubahan di Pelanggan.

Catatan: Akun ini juga harus ada di Publisher dengan hak istimewa yang memadai. Ketika Anda menggunakan Autentikasi Windows, delegasi akun keamanan harus didukung.
2 Menggunakan login server tertaut yang sudah ada dan ditentukan pengguna yang dibuat menggunakan sp_link_publication.

[ @login = ] N'login'

Login. @login adalah sysname, dengan default NULL. Parameter ini harus ditentukan ketika @security_mode adalah 0.

[ @password = ] N'password'

Kata sandi. @password adalah sysname, dengan default NULL. Parameter ini harus ditentukan ketika @security_mode adalah 0.

[ @distributor = ] N'distributor'

Nama Distributor. @distributor adalah sysname, dengan default string kosong.

Mengembalikan nilai kode

0 (berhasil) atau 1 (kegagalan).

Keterangan

sp_link_publication digunakan dengan segera memperbarui langganan dalam replikasi transaksional.

sp_link_publication dapat digunakan untuk langganan push dan pull. Ini dapat dipanggil sebelum atau setelah langganan dibuat. Entri disisipkan atau diperbarui dalam tabel sistem MSsubscription_properties .

Untuk langganan push, entri dapat dibersihkan dengan sp_subscription_cleanup. Untuk langganan penarikan, entri dapat dibersihkan dengan sp_droppullsubscription atau sp_subscription_cleanup. Anda juga dapat memanggil sp_link_publication dengan NULL kata sandi untuk menghapus entri dalam tabel sistem MSsubscription_properties untuk masalah keamanan.

Mode default yang digunakan oleh pelanggan pembaruan segera saat tersambung ke Publisher tidak mengizinkan koneksi menggunakan Autentikasi Windows. Untuk terhubung dengan mode Autentikasi Windows, server tertaut harus disiapkan ke Penerbit, dan pelanggan pembaruan segera harus menggunakan koneksi ini saat memperbarui Pelanggan. Ini mengharuskan sp_link_publication dijalankan dengan @security_mode diatur ke 2. Ketika Anda menggunakan Autentikasi Windows, delegasi akun keamanan harus didukung.

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 @publicationDB AS sysname;
DECLARE @publisher AS sysname;
DECLARE @login AS sysname;
DECLARE @password AS nvarchar(512);
SET @publication = N'AdvWorksProductTran';
SET @publicationDB = N'AdventureWorks2022';
SET @publisher = $(PubServer);
SET @login = $(Login);
SET @password = $(Password);

-- At the subscription database, create a pull subscription to a transactional 
-- publication using immediate updating with queued updating as a failover.
EXEC sp_addpullsubscription 
    @publisher = @publisher, 
    @publication = @publication, 
    @publisher_db = @publicationDB, 
    @update_mode = N'failover', 
    @subscription_type = N'pull';

-- Add an agent job to synchronize the pull subscription, 
-- which uses Windows Authentication when connecting to the Distributor.
EXEC sp_addpullsubscription_agent 
    @publisher = @publisher, 
    @publisher_db = @publicationDB, 
    @publication = @publication,
    @job_login = @login,
    @job_password = @password; 
 
-- Add a Windows Authentication-based linked server that enables the 
-- Subscriber-side triggers to make updates at the Publisher. 
EXEC sp_link_publication 
    @publisher = @publisher, 
    @publication = @publication,
    @publisher_db = @publicationDB, 
    @security_mode = 0,
    @login = @login,
    @password = @password;
GO

USE AdventureWorks2022;
GO

-- Execute this batch at the Publisher.
DECLARE @publication AS sysname;
DECLARE @subscriptionDB AS sysname;
DECLARE @subscriber AS sysname;
SET @publication = N'AdvWorksProductTran'; 
SET @subscriptionDB = N'AdventureWorks2022Replica'; 
SET @subscriber = $(SubServer);

-- At the Publisher, register the subscription, using the defaults.
USE [AdventureWorks2022]
EXEC sp_addsubscription 
    @publication = @publication, 
    @subscriber = @subscriber, 
    @destination_db = @subscriptionDB, 
    @subscription_type = N'pull', 
    @update_mode = N'failover';
GO

Izin

Hanya anggota peran server tetap sysadmin yang dapat menjalankan sp_link_publication.