Bagikan melalui


Meningkatkan Skrip Replikasi (Pemrograman Transact-SQL Replikasi)

File skrip Transact-SQL dapat digunakan untuk mengonfigurasi topologi replikasi secara terprogram. Untuk informasi selengkapnya, lihat Konsep Prosedur Tersimpan Sistem Replikasi.

Penting

Meskipun Anda tidak diharuskan untuk meningkatkan skrip yang dijalankan oleh anggota sysadmin peran, kami sarankan Anda memodifikasi skrip yang ada seperti yang dijelaskan dalam topik ini. Tentukan akun yang memiliki izin minimum untuk setiap agen replikasi seperti yang dijelaskan di bagian "Izin yang Diperlukan Oleh Agen" dari topik Model Keamanan Agen Replikasi.

Peningkatan keamanan ini, yang memungkinkan kontrol lebih besar atas izin dengan memungkinkan Anda untuk secara eksplisit menentukan akun Microsoft Windows di mana pekerjaan agen replikasi dijalankan, memengaruhi prosedur tersimpan berikut dalam skrip yang ada:

  • sp_addpublication_snapshot:

    Anda sekarang harus menyediakan kredensial Windows sebagai @job_login dan @job_password saat menjalankan sp_addpublication_snapshot (Transact-SQL) untuk membuat pekerjaan tempat Agen Rekam Jepret berjalan di Distributor.

  • sp_addpushsubscription_agent:

    Anda sekarang harus menjalankan sp_addpushsubscription_agent (Transact-SQL) untuk secara eksplisit menambahkan pekerjaan dan menyediakan kredensial Windows (@job_login dan @job_password) di mana pekerjaan Agen Distribusi berjalan di Distributor. Dalam versi SQL Server sebelum SQL Server 2005, ini dilakukan secara otomatis saat langganan push dibuat.

  • sp_addmergepushsubscription_agent:

    Anda sekarang harus menjalankan sp_addmergepushsubscription_agent (Transact-SQL) untuk secara eksplisit menambahkan pekerjaan dan menyediakan kredensial Windows (@job_login dan @job_password) di mana pekerjaan Agen Penggabungan berjalan di Distributor. Dalam versi SQL Server sebelum SQL Server 2005, ini dilakukan secara otomatis saat langganan push dibuat.

  • sp_addpullsubscription_agent:

    Anda sekarang harus menyediakan kredensial Windows sebagai @job_login dan @job_password saat menjalankan sp_addpullsubscription_agent (Transact-SQL) untuk membuat pekerjaan di mana Agen Distribusi berjalan di Pelanggan.

  • sp_addmergepullsubscription_agent:

    Anda sekarang harus menyediakan kredensial Windows sebagai @job_login dan @job_password saat menjalankan sp_addmergepullsubscription_agent (Transact-SQL) untuk membuat pekerjaan di mana Agen Penggabungan berjalan di Pelanggan.

  • sp_addlogreader_agent:

    Anda sekarang harus menjalankan sp_addlogreader_agent (Transact-SQL) untuk menambahkan pekerjaan secara manual dan menyediakan kredensial Windows di mana Agen Pembaca Log berjalan di Distributor. Dalam versi SQL Server sebelum SQL Server 2005, ini dilakukan secara otomatis ketika publikasi transaksi dibuat.

  • sp_addqreader_agent:

    Anda sekarang harus menjalankan sp_addqreader_agent (Transact-SQL) untuk menambahkan pekerjaan secara manual dan menyediakan kredensial Windows di mana Agen Pembaca Antrean berjalan di Distributor. Dalam versi SQL Server sebelum SQL Server 2005, ini dilakukan secara otomatis ketika publikasi transaksional yang mendukung pembaruan antrean dibuat.

Dalam model keamanan yang diperkenalkan pada SQL Server 2005, agen replikasi selalu membuat koneksi ke instans lokal SQL Server dengan Autentikasi Windows menggunakan kredensial yang disediakan dalam @job_name dan @job_password. Untuk informasi tentang persyaratan akun Windows yang digunakan saat menjalankan pekerjaan agen replikasi, lihat Model Keamanan Agen Replikasi.

Penting

Jika memungkinkan, minta pengguna untuk memasukkan kredensial keamanan saat runtime. Jika Anda menyimpan kredensial dalam file skrip, pastikan file itu sendiri diamankan.

Untuk meningkatkan skrip yang mengonfigurasi rekam jepret atau publikasi transaksional

  1. Dalam skrip yang ada, sebelum sp_addpublication (Transact-SQL), jalankan sp_addlogreader_agent (Transact-SQL) di Penerbit pada database publikasi. Tentukan kredensial Windows tempat Agen Pembaca Log berjalan untuk @job_name dan @job_password. Jika agen akan menggunakan Autentikasi SQL Server saat menyambungkan ke Penerbit, Anda juga harus menentukan nilai 0 untuk @publisher_security_mode dan informasi login SQL Server untuk @publisher_login dan @publisher_password. Ini membuat pekerjaan Agen Pembaca Log untuk database publikasi.

    Catatan

    Langkah ini hanya untuk publikasi transaksi dan tidak diperlukan untuk publikasi rekam jepret.

  2. (Opsional) Sebelum sp_addpublication (Transact-SQL), jalankansp_addqreader_agent (Transact-SQL) di Distributor pada database distribusi. Tentukan kredensial Windows tempat Agen Pembaca Antrean berjalan untuk @job_name dan @job_password. Ini membuat pekerjaan Agen Pembaca Antrean untuk Distributor.

    Catatan

    Langkah ini hanya diperlukan untuk publikasi transaksional yang mendukung antrean memperbarui pelanggan.

  3. (Opsional) Perbarui eksekusi sp_addpublication (Transact-SQL) untuk mengatur nilai non-default apa pun untuk parameter yang menerapkan fungsionalitas replikasi baru.

  4. Setelah sp_addpublication (Transact-SQL), jalankan sp_addpublication_snapshot (Transact-SQL) di Penerbit pada database publikasi. Tentukan @publication dan kredensial Windows tempat Agen Rekam Jepret berjalan untuk @job_name dan @job_password. Jika agen akan menggunakan Autentikasi SQL Server saat menyambungkan ke Penerbit, Anda juga harus menentukan nilai 0 untuk @publisher_security_mode dan informasi login SQL Server untuk @publisher_login dan @publisher_password. Ini membuat pekerjaan Agen Rekam Jepret untuk publikasi.

  5. (Opsional) Perbarui eksekusi sp_addarticle (Transact-SQL) untuk mengatur nilai non-default apa pun untuk parameter yang menerapkan fungsionalitas replikasi baru.

Untuk meningkatkan skrip yang menambahkan langganan ke rekam jepret atau publikasi transaksi

  1. Setelah menjalankan prosedur tersimpan yang membuat langganan, pastikan Anda menjalankan prosedur tersimpan yang membuat pekerjaan Agen Distribusi untuk menyinkronkan langganan. Prosedur tersimpan yang Anda gunakan akan bergantung pada jenis langganan.

Untuk meningkatkan skrip yang mengonfigurasi publikasi gabungan

  1. (Opsional) Dalam skrip yang ada, perbarui eksekusi sp_addmergepublication (Transact-SQL) untuk mengatur nilai non-default untuk parameter yang mengimplementasikan fungsionalitas replikasi baru.

  2. Setelah sp_addmergepublication (Transact-SQL), jalankansp_addpublication_snapshot (Transact-SQL) di Publisher pada database publikasi. Tentukan @publication dan kredensial Windows tempat Agen Rekam Jepret berjalan untuk @job_name dan @job_password. Jika agen akan menggunakan Autentikasi SQL Server saat menyambungkan ke Penerbit, Anda juga harus menentukan nilai 0 untuk @publisher_security_mode dan informasi login SQL Server untuk @publisher_login dan @publisher_password. Ini membuat pekerjaan Agen Rekam Jepret untuk publikasi.

  3. (Opsional) Perbarui eksekusi sp_addmergearticle (Transact-SQL) untuk mengatur nilai non-default apa pun untuk parameter yang menerapkan fungsionalitas replikasi baru.

Untuk meningkatkan skrip yang menambahkan langganan ke publikasi gabungan

  1. Setelah menjalankan prosedur tersimpan yang membuat langganan, pastikan Anda menjalankan prosedur tersimpan yang membuat pekerjaan Agen Penggabungan untuk menyinkronkan langganan. Prosedur tersimpan yang Anda gunakan akan bergantung pada jenis langganan.

Contoh

Berikut ini adalah contoh skrip SQL Server 2000 yang membuat publikasi transaksi untuk tabel Produk. Publikasi ini mendukung pembaruan segera dengan pembaruan antrean sebagai failover. Parameter default telah dihapus untuk keterbacaan.

USE [Northwind]
GO

DECLARE @publication AS sysname
DECLARE @publicationDB AS sysname
DECLARE @article AS sysname
SET @publication = N'NwdProductTran'
SET @publicationDB = N'Northwind'
SET @article = N'Products'

-- Enable the replication database.
EXEC sp_replicationdboption 
    @dbname = @publicationDB, 
    @optname = N'publish', 
    @value = N'true'

-- Add the transactional publication.
EXEC sp_addpublication 
    @publication = @publication, 
    @sync_method = N'native', 
    @status = N'active', 
    @repl_freq = N'continuous', 
    @description = N'Transactional publication of Northwind.', 
    @allow_push = N'true', 
    @allow_pull = N'true', 
    @allow_sync_tran = N'true', 
    @autogen_sync_procs = N'true', 
    @allow_queued_tran = N'true'

-- Add a snapshot job.
EXEC sp_addpublication_snapshot 
    @publication = @publication

-- Add the transactional articles.
EXEC sp_addarticle 
    @publication = @publication, 
    @article = @article, 
    @source_owner = N'dbo', 
    @source_object = @article, 
    @destination_table = @article, 
    @type = N'logbased', 
    @schema_option = 0x00000000000080F3, 
    @ins_cmd = N'CALL sp_MSins_Products', 
    @del_cmd = N'XCALL sp_MSdel_Products', 
    @upd_cmd = N'XCALL sp_MSupd_Products', 
    @auto_identity_range = N'false'
GO

Contoh

Berikut ini adalah contoh peningkatan skrip sebelumnya, yang membuat publikasi transaksional, agar berhasil dijalankan untuk SQL Server 2005 dan versi yang lebih baru. Publikasi ini mendukung pembaruan segera dengan pembaruan antrean sebagai failover. Default untuk parameter baru telah dinyatakan secara eksplisit.

Catatan

Kredensial Windows disediakan saat runtime menggunakan variabel pembuatan skrip sqlcmd .

-- To avoid storing the login and password in the script file, the value 
-- is passed into SQLCMD as a scripting variable. 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 at the Distributor.
USE [distribution]

DECLARE @login AS sysname;
DECLARE @password AS sysname;
-- Specify the Windows account to run the Queue Reader Agent.
SET @login = $(Login); 
-- Pass the password at runtime.
SET @password = $(Password); 

-- Execute sp_addqreader_agent to create the Queue Reader Agent job. 
EXEC sp_addqreader_agent 
    @job_login = @login, 
    @job_password = @password;
GO

-- Execute at the Publisher.
USE [Northwind]
GO

DECLARE @publication AS sysname;
DECLARE @publicationDB AS sysname;
DECLARE @article AS sysname;
DECLARE @login AS sysname;
DECLARE @password AS sysname;
SET @publication = N'NwdProductTran';
SET @publicationDB = N'Northwind';
SET @article = N'Products';
-- Specify the Windows account to run the Log Reader and Snapshot Agents.
SET @login = $(Login); 
-- Pass the password at runtime.
SET @password = $(Password); 

-- Enable the replication database.
EXEC sp_replicationdboption 
    @dbname = @publicationDB, 
    @optname = N'publish', 
    @value = N'true';

-- Execute sp_addlogreader_agent to create the agent job. 
EXEC sp_addlogreader_agent 
    @job_login = @login, 
    @job_password = @password, 
    -- Explicitly specify the use of Windows Integrated Authentication (default) 
    -- when connecting to the Publisher.
    @publisher_security_mode = 1;

-- Add the transactional publication.
EXEC sp_addpublication 
    @publication = @publication, 
    @sync_method = N'native', 
    @repl_freq = N'continuous', 
    @status = N'active',
    @description = N'Transactional publication of Northwind.', 
    @allow_push = N'true', 
    @allow_pull = N'true', 
    @allow_sync_tran = N'true', 
    @autogen_sync_procs = N'true', 
    @allow_queued_tran = N'true',
    @replicate_ddl = 1,
    @enabled_for_p2p = N'false';

-- Create a new snapshot job for the publication, using a default schedule.
EXEC sp_addpublication_snapshot 
    @publication = @publication, 
    @job_login = @login, 
    @job_password = @password,
    -- Explicitly specify the use of Windows Integrated Authentication (default) 
    -- when connecting to the Publisher.
    @publisher_security_mode = 1;

-- Add a transactional article.
EXEC sp_addarticle 
  @publication = @publication, 
  @article = @article, 
  @source_owner = N'dbo', 
  @source_object = @article, 
  @destination_table = @article, 
  @type = N'logbased', 
  @schema_option = 0x00000000000080F3, 
  @ins_cmd = N'CALL sp_MSins_Products', 
  @del_cmd = N'XCALL sp_MSdel_Products', 
  @upd_cmd = N'XCALL sp_MSupd_Products', 
  @auto_identity_range = N'false',
  @identityrangemanagementoption = N'manual',
  @fire_triggers_on_snapshot = N'false';
GO

Contoh

Berikut ini adalah contoh skrip SQL Server 2000 yang membuat publikasi gabungan untuk tabel Pelanggan. Parameter default telah dihapus untuk keterbacaan.

-- Enable the replication database.
USE [Northwind]
GO

DECLARE @publicationDB AS sysname
DECLARE @publication AS sysname
DECLARE @article AS sysname
SET @publicationDB = N'Northwind' 
SET @publication = N'NwdCustomersMerge' 
SET @article = N'Customers' 

EXEC sp_replicationdboption 
    @dbname = @publicationDB, 
    @optname = N'merge publish', 
    @value = N'true'

-- Add the merge publication.
EXEC sp_addmergepublication 
    @publication = @publication, 
    @description = N'Merge publication of Northwind.', 
    @retention = 14, 
    @sync_mode = N'native', 
    @centralized_conflicts = N'true', 
    @dynamic_filters = N'false', 
    @keep_partition_changes = N'false'
 
EXEC sp_addpublication_snapshot 
    @publication = @publication

-- Add the merge articles.
EXEC sp_addmergearticle 
    @publication = @publication, 
    @article = @article, 
    @source_owner = N'dbo', 
    @source_object = @article, 
    @type = N'table', 
    @description = null, 
    @column_tracking = N'true', 
    @schema_option = 0x000000000000CFF1
 GO

Contoh

Berikut ini adalah contoh skrip sebelumnya, yang membuat publikasi gabungan, ditingkatkan agar berhasil dijalankan untuk SQL Server 2005 dan versi yang lebih baru. Default untuk parameter baru telah dinyatakan secara eksplisit.

Catatan

Kredensial Windows disediakan saat runtime menggunakan variabel pembuatan skrip sqlcmd .

-- To avoid storing the login and password in the script file, the value 
-- is passed into SQLCMD as a scripting variable. 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".

-- Enabling the replication database
-- Enable the replication database.
USE [Northwind]
GO

DECLARE @publicationDB AS sysname;
DECLARE @publication AS sysname;
DECLARE @article AS sysname;
DECLARE @login AS sysname;
DECLARE @password AS sysname;
SET @publicationDB = N'Northwind';
SET @publication = N'NwdCustomersMerge';
SET @article = N'Customers';
-- Specify the Windows account to run the Snapshot Agent.
SET @login = $(Login); 
-- Supply the password at runtime.
SET @password = $(Password); 

EXEC sp_replicationdboption 
    @dbname = @publicationDB, 
    @optname = N'merge publish', 
    @value = N'true';

-- Add the merge publication.
EXEC sp_addmergepublication 
    @publication = @publication, 
    @description = N'Merge publication of Northwind.', 
    @retention = 14, 
    @sync_mode = N'native', 
    @dynamic_filters = N'false', 
    @keep_partition_changes = N'false',
    -- Only set to '90RTM' if all Subscribers are SQL Server 2005.
    @publication_compatibility_level = N'90RTM',
    @replicate_ddl = 1,
    @allow_subscriber_initiated_snapshot = N'true',
    @allow_web_synchronization = N'false',
    @allow_partition_realignment = N'true',
    @retention_period_unit = N'day',
    @automatic_reinitialization_policy = 0,
    @conflict_logging = N'both';
 
EXEC sp_addpublication_snapshot 
    @publication = @publication, 
    @job_login = @login,
    @job_password = @password;

-- Add the merge article.
EXEC sp_addmergearticle 
    @publication = @publication, 
    @article = @article, 
    @source_owner = N'dbo', 
    @source_object = @article, 
    @type = N'table', 
    @description = null, 
    @column_tracking = N'true', 
    @schema_option = 0x0000000000034FD1,
    @partition_options = 0,
    @subscriber_upload_options = 0,
    @identityrangemanagementoption = N'manual',
    @delete_tracking = N'true',
    @compensate_for_errors = N'false',
    @stream_blob_columns = N'true';
GO

Contoh

Berikut ini adalah contoh skrip SQL Server 2000 yang membuat langganan push ke publikasi transaksi. Parameter default telah dihapus untuk keterbacaan.

DECLARE @publication AS sysname;
DECLARE @subscriber AS sysname;
DECLARE @subscriptionDB AS sysname;
SET @publication = N'NwdProductTran' 
SET @subscriber = N'MYSUBSERVER' 
SET @subscriptionDB = N'NorthwindReplica' 

-- Add a Subscriber, using the defaults.
USE [master]
EXEC sp_addsubscriber 
    @subscriber = @subscriber

-- Add a push subscription to a transactional publication.
USE [Northwind]
EXEC sp_addsubscription 
    @publication = @publication, 
    @subscriber = @subscriber, 
    @destination_db = @subscriptionDB, 
    @subscription_type = N'push'
GO

Contoh

Berikut ini adalah contoh skrip sebelumnya, yang membuat langganan push ke publikasi transaksional, yang ditingkatkan agar berjalan dengan sukses untuk SQL Server 2005 dan versi yang lebih baru. Default untuk parameter baru telah dinyatakan secara eksplisit.

Catatan

Kredensial Windows disediakan saat runtime menggunakan variabel pembuatan skrip sqlcmd .

-- 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 @login AS sysname;
DECLARE @password AS sysname;
SET @publication = N'NwdProductTran'; 
SET @subscriber = $(Subscriber); 
SET @subscriptionDB = N'NorthwindReplica'; 
-- Specify the Windows account to run the Distribution Agent.
SET @login = $(Login); 
-- Supply the password at runtime.
SET @password = $(Password); 

-- Add a push subscription to a transactional publication.
USE [Northwind]
EXEC sp_addsubscription 
    @publication = @publication, 
    @subscriber = @subscriber, 
    @destination_db = @subscriptionDB, 
    @subscription_type = N'push';

-- Add an agent job to synchronize the push subscription.
EXEC sp_addpushsubscription_agent 
    @publication = @publication, 
    @subscriber = @subscriber, 
    @subscriber_db = @subscriptionDB, 
    @job_login = @login, 
    @job_password = @password;
GO

Contoh

Berikut ini adalah contoh skrip SQL Server 2000 yang membuat langganan push ke publikasi gabungan. Parameter default telah dihapus untuk keterbacaan.

DECLARE @publication AS sysname
DECLARE @subscriber AS sysname
DECLARE @subscriptionDB AS sysname
SET @publication = N'NwdCustomersMerge' 
SET @subscriber = N'SUBSERVER' 
SET @subscriptionDB = N'NorthwindReplica' 

-- Add a Subscriber, using the defaults.
USE [master]
EXEC sp_addsubscriber 
  @subscriber = @subscriber

-- Add a push subscription to a merge publication.
USE [Northwind]
EXEC sp_addmergesubscription 
  @publication = @publication, 
  @subscriber = @subscriber, 
  @subscriber_db = @subscriptionDB, 
  @subscription_type = N'push',
  @subscriber_type = N'local',
  @sync_type = N'automatic'
GO

Contoh

Berikut ini adalah contoh skrip sebelumnya, yang membuat langganan pendorongan ke publikasi gabungan, ditingkatkan agar berjalan dengan sukses untuk SQL Server 2005 dan versi yang lebih baru. Default untuk parameter baru telah dinyatakan secara eksplisit.

Catatan

Kredensial Windows disediakan saat runtime menggunakan variabel pembuatan skrip sqlcmd .

-- 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 @login AS sysname;
DECLARE @password AS sysname;
SET @publication = N'NwdCustomersMerge'; 
SET @subscriber = $(Subscriber); 
SET @subscriptionDB = N'NorthwindReplica'; 
-- Specify the Windows account to run the Merge Agent.
SET @login = $(Login); 
-- Supply the password at runtime.
SET @password = $(Password); 

-- Add a push subscription to a merge publication.
USE [Northwind]
EXEC sp_addmergesubscription 
    @publication = @publication, 
    @subscriber = @subscriber, 
    @subscriber_db = @subscriptionDB, 
    @subscription_type = N'push';

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

Contoh

Berikut ini adalah contoh skrip SQL Server 2000 yang membuat langganan penarikan ke publikasi transaksi. Parameter default telah dihapus untuk keterbacaan.

DECLARE @publication AS sysname
DECLARE @subscriber AS sysname
DECLARE @subscriptionDB AS sysname
SET @publication = N'NwdCustomersMerge' 
SET @subscriber = N'SUBSERVER' 
SET @subscriptionDB = N'NorthwindReplica' 

-- Add a Subscriber, using the defaults.
USE [master]
EXEC sp_addsubscriber 
  @subscriber = @subscriber

-- Add a push subscription to a merge publication.
USE [Northwind]
EXEC sp_addmergesubscription 
  @publication = @publication, 
  @subscriber = @subscriber, 
  @subscriber_db = @subscriptionDB, 
  @subscription_type = N'push',
  @subscriber_type = N'local',
  @sync_type = N'automatic'
GO

Contoh

Berikut ini adalah contoh skrip sebelumnya, yang membuat langganan penarikan ke publikasi transaksional, ditingkatkan agar berjalan dengan sukses untuk SQL Server 2005 dan versi yang lebih baru. Default untuk parameter baru telah dinyatakan secara eksplisit.

Catatan

Kredensial Windows disediakan saat runtime menggunakan variabel pembuatan skrip sqlcmd .

-- 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 at the Subscriber.
DECLARE @publication AS sysname;
DECLARE @publisher AS sysname;
DECLARE @publicationDB AS sysname;
DECLARE @login AS sysname;
DECLARE @password AS sysname;
SET @publication = N'NwdProductTran'; 
SET @publisher = $(Publisher); 
SET @publicationDB = N'Northwind'; 
-- Specify the Windows account to run the Distribution Agent.
SET @login = $(Login); 
-- Supply the password at runtime.
SET @password = $(Password); 

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

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

-- Execute at the Publisher.
DECLARE @publication AS sysname;
DECLARE @subscriber AS sysname;
DECLARE @subscriptionDB AS sysname;
SET @publication = N'NwdProductTran'; 
SET @subscriber = $(Subscriber); 
SET @subscriptionDB = N'NorthwindReplica'; 

-- Add a pull subscription to a transactional publication.
USE [Northwind]
EXEC sp_addsubscription 
    @publication = @publication, 
    @subscriber = @subscriber, 
    @destination_db = @subscriptionDB, 
    @subscription_type = N'pull';
GO

Contoh

Berikut ini adalah contoh skrip SQL Server 2000 yang membuat langganan penarikan ke publikasi gabungan. Parameter default telah dihapus untuk keterbacaan.

-- Execute at the Subscriber
DECLARE @publication AS sysname
DECLARE @publisher AS sysname
DECLARE @publicationDB AS sysname
DECLARE @subscriber AS sysname
DECLARE @subscriptionDB AS sysname
SET @publication = N'NwdCustomersMerge' 
SET @publisher = N'PUBSERVER' 
SET @publicationDB = N'Northwind' 
SET @subscriber = N'SUBSERVER' 
SET @subscriptionDB = N'NorthwindReplica'

-- At the subscription database, create a pull subscription 
-- to a merge publication.
USE [NorthwindReplica]
EXEC sp_addmergepullsubscription 
    @publisher = @publisher, 
    @publication = @publication, 
    @publisher_db = @publicationDB

-- Add an agent job to synchronize the pull subscription. 
EXEC sp_addmergepullsubscription_agent 
    @publisher = @publisher, 
    @publisher_db = @publicationDB, 
    @publication = @publication, 
    @subscriber = @subscriber, 
    @subscriber_db = @subscriptionDB, 
    @distributor = @publisher
GO

-- Execute at the Publisher.
DECLARE @publication AS sysname
DECLARE @subscriber AS sysname
DECLARE @subscriptionDB AS sysname
SET @publication = N'NwdCustomersMerge' 
SET @subscriber = N'MYSUBSERVER' 
SET @subscriptionDB = N'NorthwindReplica' 

-- Add a Subscriber, using the defaults.
USE [master]
EXEC sp_addsubscriber 
  @subscriber = @subscriber

-- Add a pull subscription to a merge publication.
USE [Northwind]
EXEC sp_addmergesubscription 
  @publication = @publication, 
  @subscriber = @subscriber, 
  @subscriber_db = @subscriptionDB, 
  @subscription_type = N'pull',
  @subscriber_type = N'local',
  @sync_type = N'automatic'
GO

Contoh

Berikut ini adalah contoh skrip sebelumnya, yang membuat langganan penarikan ke publikasi gabungan, ditingkatkan agar berjalan dengan sukses untuk SQL Server 2005 dan versi yang lebih baru. Default untuk parameter baru telah dinyatakan secara eksplisit.

Catatan

Kredensial Windows disediakan saat runtime menggunakan variabel pembuatan skrip sqlcmd .

-- 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 at the Subscriber
DECLARE @publication  AS sysname;
DECLARE @publisher AS sysname;
DECLARE @publicationDB AS sysname;
DECLARE @login AS sysname;
DECLARE @password AS sysname;
SET @publication = N'NwdCustomersMerge'; 
SET @publisher = $(Publisher); 
SET @publicationDB = N'Northwind'; 
-- Specify the Windows account to run the Merge Agent.
SET @login = $(Login); 
-- Pass the password at runtime.
SET @password = $(Password); 

-- At the subscription database, create a pull subscription 
-- to a merge publication.
USE [NorthwindReplica]
EXEC sp_addmergepullsubscription 
  @publisher = @publisher, 
  @publication = @publication, 
  @publisher_db = @publicationDB;

-- Add an agent job to synchronize the pull subscription. 
EXEC sp_addmergepullsubscription_agent 
  @publisher = @publisher, 
  @publisher_db = @publicationDB, 
  @publication = @publication,
  @distributor = @publisher,
  @job_login = @login,
  @job_password = @password;
GO

-- Execute at the Publisher.
DECLARE @publication AS sysname;
DECLARE @subscriber AS sysname;
DECLARE @subscriptionDB AS sysname;
SET @publication = N'NwdCustomersMerge';
SET @subscriber = $(Subscriber);
SET @subscriptionDB = N'NorthwindReplica';

-- Add a pull subscription to a merge publication.
USE [Northwind]
EXEC sp_addmergesubscription 
  @publication = @publication, 
  @subscriber = @subscriber, 
  @subscriber_db = @subscriptionDB, 
  @subscription_type = N'pull',
  @subscriber_type = N'local',
  @sync_type = N'automatic';
GO

Lihat juga

Membuat Publikasi
Membuat Langganan Pendorongan
Membuat Langganan Pull
Lihat dan Ubah Pengaturan Keamanan Replikasi
MSSQL_ENG021797
MSSQL_ENG021798
Konsep Prosedur Tersimpan Sistem Replikasi
Meningkatkan Database yang Direplikasi