sp_link_publication (Transact-SQL)

Berlaku untuk: SQL Server (semua versi yang didukung)

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

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 Mengaktifkan Koneksi Terenkripsi ke Mesin Database (Pengelola Konfigurasi SQL Server).

Penting

Dalam kondisi tertentu, prosedur tersimpan ini dapat gagal jika Pelanggan menjalankan Microsoft SQL Server 2005 (9.x) Paket Layanan 1 atau yang lebih baru, dan Penerbit menjalankan versi yang lebih lama. Jika prosedur tersimpan gagal dalam skenario ini, tingkatkan Publisher ke SQL Server 2005 (9.x) Paket Layanan 1 atau yang lebih baru.

Ikon tautan topikKonvensi Sintaks Transact-SQL

Sintaks

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

Argumen

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

[ @publisher_db = ] 'publisher_db' Adalah nama database Penerbit yang akan ditautkan. publisher_db adalah sysname, tanpa default.

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

[ @security_mode = ] security_mode Adalah mode keamanan yang digunakan oleh Pelanggan untuk menyambungkan ke Publisher jarak jauh untuk segera diperbarui. security_modeint, 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 kata sandi.

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

Catatan: Akun ini juga harus ada di Penerbit dengan hak istimewa yang memadai. Saat 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 = ] 'login' Apakah login. login adalah sysname, dengan default NULL. Parameter ini harus ditentukan ketika security_mode adalah 0.

[ @password = ] 'password' Adalah kata sandi. kata sandi adalah sysname, dengan default NULL. Parameter ini harus ditentukan ketika security_mode adalah 0.

[ @distributor = ] 'distributor' Adalah nama Distributor. distributor adalah sysname, dengan default NULL.

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 pendorongan dan penarikan. Ini dapat dipanggil sebelum atau setelah langganan dibuat. Entri disisipkan atau diperbarui dalam tabel sistem MSsubscription_properties (Transact-SQL ).

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

Mode default yang digunakan oleh pelanggan pembaruan langsung saat tersambung ke Publisher tidak memperbolehkan koneksi menggunakan Autentikasi Windows. Untuk terhubung dengan mode Autentikasi Windows, server tertaut harus disiapkan ke Publisher, dan pelanggan pembaruan segera harus menggunakan koneksi ini saat memperbarui Pelanggan. Ini mengharuskan sp_link_publication dijalankan dengan security_mode = 2. Saat 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'AdventureWorks2012';
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 AdventureWorks2012
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'AdventureWorks2012Replica'; 
SET @subscriber = $(SubServer);

-- At the Publisher, register the subscription, using the defaults.
USE [AdventureWorks2012]
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.

Lihat juga

sp_droppullsubscription (Transact-SQL)
sp_helpsubscription_properties (Transact-SQL)
sp_subscription_cleanup (Transact-SQL)
Prosedur Tersimpan Sistem (Transact-SQL)