Meningkatkan Skrip Replikasi (Pemrograman Transact-SQL Replikasi)

Berlaku untuk:SQL ServerAzure SQL Managed Instance

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 peran sysadmin , 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 menentukan akun Microsoft Windows secara eksplisit 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 saat menjalankan sp_addpublication_snapshot (Transact-SQL) untuk membuat pekerjaan tempat Agen Rekam Jepret berjalan di Distributor@job_password.

  • 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 (9.x), ini dilakukan secara otomatis ketika 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 (9.x), ini dilakukan secara otomatis ketika langganan push dibuat.

  • sp_addpullsubscription_agent:

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

  • sp_addmergepullsubscription_agent:

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

  • sp_addlogreader_agent:

    Anda sekarang harus menjalankan sp_addlogreader_agent (Transact-SQL) untuk menambahkan pekerjaan secara manual dan menyediakan kredensial Windows tempat Agen Pembaca Log berjalan di Distributor. Dalam versi SQL Server sebelum SQL Server 2005 (9.x), 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 tempat Agen Pembaca Antrean berjalan di Distributor. Dalam versi SQL Server sebelum SQL Server 2005 (9.x), ini dilakukan secara otomatis ketika publikasi transaksional yang mendukung pembaruan antrean dibuat.

Dalam model keamanan yang diperkenalkan di SQL Server 2005 (9.x), agen replikasi selalu membuat koneksi ke instans lokal SQL Server dengan Autentikasi Windows menggunakan kredensial yang disediakan di @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 dan @job_name@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 masuk 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), jalankan sp_addqreader_agent (Transact-SQL) di Distributor pada database distribusi. Tentukan kredensial Windows tempat Agen Pembaca Antrean berjalan dan @job_name@job_password. Ini membuat pekerjaan Agen Pembaca Antrean untuk Distributor.

    Catatan

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

  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 masuk 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 menerapkan fungsionalitas replikasi baru.

  2. Setelah sp_addmergepublication (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_modedan informasi masuk 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 memutakhirkan 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

J. Skrip SQL Server 2000 untuk membuat publikasi transaksi

Berikut ini adalah contoh skrip SQL Server 2000 (8.x) 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

B. Skrip SQL Server 2005 dan yang lebih baru untuk membuat publikasi transaksi

Berikut ini adalah contoh peningkatan skrip sebelumnya, yang membuat publikasi transaksional, untuk berjalan dengan sukses untuk SQL Server 2005 (9.x) dan versi yang lebih baru. Publikasi ini mendukung pembaruan segera dengan pembaruan antrean sebagai failover. Default untuk parameter baru telah dideklarasikan 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

C. Skrip SQL Server 2000 untuk membuat publikasi penggabungan

Berikut ini adalah contoh skrip SQL Server 2000 (8.x) 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

D. Skrip SQL Server 2005 dan yang lebih baru untuk membuat publikasi gabungan

Berikut ini adalah contoh skrip sebelumnya, yang membuat publikasi gabungan, ditingkatkan agar berhasil dijalankan untuk SQL Server 2005 (9.x) dan versi yang lebih baru. Default untuk parameter baru telah dideklarasikan 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

E. Skrip SQL Server 2000 untuk membuat langganan push ke publikasi transaksi

Berikut ini adalah contoh skrip SQL Server 2000 (8.x) 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

F. Skrip SQL Server 2005 dan yang lebih baru untuk membuat langganan push ke publikasi transaksi

Berikut ini adalah contoh skrip sebelumnya, yang membuat langganan push ke publikasi transaksional, ditingkatkan agar berjalan dengan sukses untuk SQL Server 2005 (9.x) dan versi yang lebih baru. Default untuk parameter baru telah dideklarasikan 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

G. Skrip SQL Server 2000 untuk membuat langganan push ke publikasi gabungan

Berikut ini adalah contoh skrip SQL Server 2000 (8.x) yang membuat langganan pendorongan 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

H. Skrip SQL Server 2005 dan yang lebih baru untuk membuat langganan push ke publikasi gabungan

Berikut ini adalah contoh skrip sebelumnya, yang membuat langganan push ke publikasi gabungan, ditingkatkan agar berhasil dijalankan untuk SQL Server 2005 (9.x) dan versi yang lebih baru. Default untuk parameter baru telah dideklarasikan 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

I. Skrip SQL Server 2000 untuk membuat langganan penarikan ke publikasi transaksi

Berikut ini adalah contoh skrip SQL Server 2000 (8.x) 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

j. Skrip SQL Server 2005 dan yang lebih baru untuk membuat langganan penarikan ke publikasi transaksi

Berikut ini adalah contoh skrip sebelumnya, yang membuat langganan penarikan ke publikasi transaksional, ditingkatkan agar berjalan dengan sukses untuk SQL Server 2005 (9.x) dan versi yang lebih baru. Default untuk parameter baru telah dideklarasikan 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

K. Skrip SQL Server 2000 untuk membuat langganan penarikan ke publikasi gabungan

Berikut ini adalah contoh skrip SQL Server 2000 (8.x) 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

L. Skrip SQL Server 2005 dan yang lebih baru untuk membuat langganan penarikan ke publikasi gabungan

Berikut ini adalah contoh skrip sebelumnya, yang membuat langganan penarikan ke publikasi gabungan, ditingkatkan agar berjalan dengan sukses untuk SQL Server 2005 (9.x) dan versi yang lebih baru. Default untuk parameter baru telah dideklarasikan 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
Menampilkan dan Mengubah Pengaturan Keamanan Replikasi
MSSQL_ENG021797
MSSQL_ENG021798
Konsep Prosedur Tersimpan Sistem Replikasi
Meningkatkan Database yang Direplikasi