Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Область применения: SQL Server Управляемый экземпляр SQL Azure
Файлы скриптов Transact-SQL можно использовать для программной настройки топологии репликации. Дополнительные сведения см. в статье Основные понятия системных хранимых процедур репликации.
Внимание
Хотя обновление скриптов, выполняемых членами роли sysadmin , не является обязательным, рекомендуется внести в существующие скрипты изменения, описанные в настоящем разделе. Для всех агентов репликации следует указывать учетные записи, наделенные минимальным числом разрешений, как это описано в подразделе «Разрешения, необходимые для агентов» раздела Replication Agent Security Model.
Эти улучшения безопасности, которые обеспечивают более контроль над разрешениями, позволяя явно указывать учетные записи Microsoft Windows, в которых выполняются задания агента репликации, влияют на следующие хранимые процедуры в существующих сценариях:
sp_addpublication_snapshot:
Теперь при выполнении sp_addpublication_snapshot (Transact-SQL) необходимо указать учетные данные Windows в виде
@job_loginи@job_password, чтобы создать задание, от имени которого Агент моментальных снимков запускается на распространителе.sp_addpushsubscription_agent:
Теперь необходимо выполнить sp_addpushsubscription_agent (Transact-SQL), чтобы явно добавить задание и указать учетные данные Windows ( и ), от имени которых на распространителе выполняется задание агента распространения. В версиях SQL Server до SQL Server 2005 (9.x) это было сделано автоматически при создании принудительной подписки.
sp_addmergepushsubscription_agent:
Теперь необходимо выполнить sp_addmergepushsubscription_agent (Transact-SQL), чтобы явно добавить задание и указать учетные данные Windows (
@job_loginи@job_password), в контексте которых выполняется задание агента слияния на распространителе. В версиях SQL Server до SQL Server 2005 (9.x) это было сделано автоматически при создании принудительной подписки.sp_addpullsubscription_agent:
Теперь необходимо указать учетные данные Windows в параметрах
@job_loginи@job_passwordпри выполнении sp_addpullsubscription_agent (Transact-SQL), чтобы создать задание, от имени которого агент распространения будет выполняться на подписчике.sp_addmergepullsubscription_agent:
Теперь необходимо указать учетные данные Windows в параметрах
@job_loginи@job_passwordпри выполнении sp_addmergepullsubscription_agent (Transact-SQL), чтобы создать задание, от имени которого агент слияния выполняется на подписчике.sp_addlogreader_agent:
Теперь необходимо выполнить sp_addlogreader_agent (Transact-SQL), чтобы вручную добавить это задание и указать учетные данные Windows, от имени которых агент чтения журнала запускается на распространителе. В версиях SQL Server до SQL Server 2005 (9.x) это было сделано автоматически при создании публикации транзакций.
sp_addqreader_agent:
Теперь необходимо выполнить sp_addqreader_agent (Transact-SQL), чтобы вручную добавить задание и указать учетные данные Windows, под которым агент чтения очередей выполняется на распространитете. В версиях SQL Server до SQL Server 2005 (9.x) это выполнялось автоматически при создании транзакционной публикации, поддерживающей обновление через очередь.
В модели безопасности, представленной в SQL Server 2005 (9.x), агенты репликации всегда делают подключения к локальному экземпляру SQL Server с проверкой подлинности Windows с использованием учетных данных, предоставленных в @job_name и @job_password. Сведения о требованиях к учетным записям Windows, которые предназначены для выполнения заданий агента репликации, см. в разделе Replication Agent Security Model.
Внимание
По возможности предлагайте пользователям вводить учетные данные системы безопасности во время выполнения приложения. Если учетные данные сохраняются в файле скрипта, то должна быть обеспечена защита этого файла.
Обновить скрипты, настраивающие публикацию моментальных снимков или транзакционную публикацию
В существующем скрипте перед sp_addpublication (Transact-SQL) выполните sp_addlogreader_agent (Transact-SQL) на издателе в базе данных публикации. Укажите в параметрах
@job_nameи@job_passwordучетные данные Windows для запуска агента чтения журнала. Если агент будет использовать проверку подлинности SQL Server при подключении к издателю, необходимо также указать значение 0 для@publisher_security_modeи учетные данные для входа в SQL Server для@publisher_loginи@publisher_password. Таким образом будет сформировано задание агента чтения журнала для базы данных публикации.Примечание.
Этот шаг предназначен только для публикаций транзакций и не обязателен для публикаций моментальных снимков.
(Необязательно) Перед sp_addpublication (Transact-SQL) выполните sp_addqreader_agent (Transact-SQL) у распространителя в базе данных распространителя. Укажите для
@job_nameи@job_passwordучетные данные Windows, от имени которых запускается агент чтения очереди. В результате этого будет сформировано задание агента чтения очереди для распространителя.Примечание.
Этот шаг требуется только для транзакционных публикаций, которые поддерживают подписчиков с обновлением через очереди.
(Необязательно) Обновите выполнение sp_addpublication (Transact-SQL), чтобы задать любые значения, не используемые по умолчанию для параметров, реализующих новые функции репликации.
После sp_addpublication (Transact-SQL) выполните sp_addpublication_snapshot (Transact-SQL) на сервере-издателе в базе данных публикации. Укажите параметр
@publicationи учетные данные Windows, от имени которых запускается агент моментальных снимков, для@job_nameи@job_password. Если агент будет использовать проверку подлинности SQL Server при подключении к издателю, необходимо также указать значение 0 для@publisher_security_modeи учетные данные для входа в SQL Server для@publisher_loginи@publisher_password. Будет создано задание агента моментальных снимков для публикации.(Необязательно) Обновите выполнение sp_addarticle (Transact-SQL), чтобы задать любые значения, не используемые по умолчанию для параметров, реализующих новые функции репликации.
Обновление скриптов, которые добавляют подписки к публикациям моментальных снимков или публикациям транзакций
После вызова хранимой процедуры, которая создает подписку, обязательно выполните хранимую процедуру, формирующую задание агента распространителя для синхронизации подписки. Хранимая процедура, которую вы используете, зависит от типа подписки.
Для подписки на вытягивание обновите вызов sp_addpullsubscription_agent (Transact-SQL), чтобы указать учетные данные Windows, от имени которых агент распространения запускается у подписчика для
@job_nameи@job_password. Это выполняется после выполнения sp_addpullsubscription. Дополнительные сведения см. в статье Создание подписки по запросу.Для подписки типа push выполните sp_addpushsubscription_agent (Transact-SQL) у издателя. Укажите
@subscriber,@subscriber_db,@publication, учетные данные Windows, под которыми агент распространителя запускается на распространителе для@job_nameи@job_password, а также расписание для этого задания агента. Дополнительные сведения см. в статье Specify Synchronization Schedules. Это необходимо сделать после вызова процедуры sp_addsubscription. Дополнительные сведения см. в статье Создание принудительной подписки.
Обновить скрипты, настраивающие публикацию слияния
(Необязательно) В существующем скрипте обновите выполнение sp_addmergepublication (Transact-SQL), чтобы задать все значения, отличные от по умолчанию, для параметров, реализующих новые функции репликации.
После sp_addmergepublication (Transact-SQL) выполните sp_addpublication_snapshot (Transact-SQL) на издателе в базе данных публикации. Укажите параметр
@publicationи учетные данные Windows, от имени которых запускается агент моментальных снимков, для@job_nameи@job_password. Если агент будет использовать проверку подлинности SQL Server при подключении к издателю, необходимо также указать значение 0 для@publisher_security_modeи учетные данные для входа в SQL Server для@publisher_loginи@publisher_password. Будет создано задание агента моментальных снимков для публикации.(Необязательно) Обновите выполнение sp_addmergearticle (Transact-SQL), чтобы задать любые значения, не используемые по умолчанию для параметров, реализующих новые функции репликации.
Обновление скриптов, добавляющих подписки для публикации слияния
После вызова хранимой процедуры, которая создает подписку, обязательно выполните хранимую процедуру, формирующую задание агента слияния для синхронизации подписки. Хранимая процедура, которую вы используете, зависит от типа подписки.
Для подписки на вытягивание обновите выполнение sp_addmergepullsubscription_agent (Transact-SQL), чтобы указать учетные данные Windows, от имени которых агент слияния запускается на подписчике, для
@job_nameи@job_password. Это необходимо сделать после вызова процедуры sp_addmergepullsubscription. Дополнительные сведения см. в статье Создание подписки по запросу.Для подписки типа push выполните sp_addmergepushsubscription_agent (Transact-SQL) у издателя. Укажите
@subscriber,@subscriber_db,@publication, учетные данные Windows, от имени которых агент слияния запускается на распространителе, для@job_nameи@job_password, а также расписание для задания этого агента. Дополнительные сведения см. в статье Specify Synchronization Schedules. Это необходимо сделать после вызова хранимой процедуры sp_addmergesubscription. Дополнительные сведения см. в статье Создание принудительной подписки.
Примеры
А. Скрипт SQL Server 2000 для создания публикации транзакций
Ниже приведен пример скрипта SQL Server 2000 (8.x), который создает публикацию транзакций для таблицы Product. Эта публикация поддерживает немедленное обновление с использованием обновления с постановкой в очередь в качестве резерва. Значения по умолчанию были удалены для удобства чтения.
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
В. Скрипт SQL Server 2005 и более поздних версий для создания публикации транзакций
Ниже приведен пример обновления предыдущего скрипта, создающего публикацию транзакций, для успешного запуска для SQL Server 2005 (9.x) и более поздних версий. Эта публикация поддерживает немедленное обновление, используя обновление с очередью в качестве резервного варианта. Значения по умолчанию для новых параметров явно заданы.
Примечание.
Учетные данные Windows предоставляются во время выполнения с помощью переменных сценария 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
В. Скрипт SQL Server 2000 для создания публикации слияния
Ниже приведен пример скрипта SQL Server 2000 (8.x), который создает публикацию слияния для таблицы Customers. Значения по умолчанию были удалены для удобства чтения.
-- 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
Д. Скрипт SQL Server 2005 и более поздних версий для создания публикации типа слияния
Ниже приведен пример предыдущего скрипта, который создает публикацию слияния и адаптирован для успешного выполнения в SQL Server 2005 (9.x) и более поздних версиях. Значения по умолчанию для новых параметров явно заданы.
Примечание.
Учетные данные Windows предоставляются во время выполнения с помощью переменных сценария 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
Е. Скрипт SQL Server 2000 для создания принудительной подписки для публикации транзакций
Ниже приведен пример скрипта SQL Server 2000 (8.x), создающего push-подписку на публикацию транзакций. Значения по умолчанию были удалены для удобства чтения.
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. Скрипт SQL Server 2005 и более поздних версий для создания принудительной подписки для публикации транзакций
Ниже приведен пример предыдущего скрипта, который создает push-подписку на публикацию транзакций, обновленную для успешного выполнения для SQL Server 2005 (9.x) и более поздних версий. Значения по умолчанию для новых параметров явно указаны.
Примечание.
Учетные данные Windows предоставляются во время выполнения с помощью переменных сценария 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. Скрипт SQL Server 2000 для создания подписки по запросу сервера для публикации слияния
Ниже приведен пример скрипта SQL Server 2000 (8.x), который создает принудительную подписку на публикацию слияния. Значения по умолчанию были удалены для удобства чтения.
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. Скрипт для SQL Server 2005 и более поздних версий для создания подписки по отправке на публикацию слияния
Ниже приведен пример предыдущего скрипта, который создает подписку типа push на публикацию слияния и адаптирован для корректной работы с SQL Server 2005 (9.x) и более поздними версиями. Значения по умолчанию для новых параметров были явно объявлены.
Примечание.
Учетные данные Windows предоставляются во время выполнения с помощью переменных сценария 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
И. Скрипт SQL Server 2000 для создания подписки по запросу для публикации транзакций
Ниже приведен пример скрипта SQL Server 2000 (8.x), который создает подписку по запросу на публикацию транзакций. Значения по умолчанию были удалены для удобства чтения.
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. Скрипт SQL Server 2005 и более поздних версий для создания подписки по запросу для публикации транзакций
Ниже приведен пример предыдущего скрипта, который создает подписку по запросу на публикацию транзакций и модифицирован для успешной работы в SQL Server 2005 (9.x) и более поздних версиях. Значения по умолчанию для новых параметров были явно указаны.
Примечание.
Учетные данные Windows предоставляются во время выполнения с помощью переменных сценария 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. Скрипт SQL Server 2000 для создания подписки по запросу для публикации слиянием
Ниже приведен пример скрипта SQL Server 2000 (8.x), который создает подписку с запросом на публикацию слиянием. Значения по умолчанию были удалены для удобства чтения.
-- 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. Скрипт для SQL Server 2005 и более поздних версий для создания подписки с запросом на публикацию слияния
Ниже представлен пример предыдущего скрипта, который создает подписку по запросу на публикацию слиянием, обновленный для успешного выполнения в SQL Server 2005 (9.x) и более поздних версиях. Значения по умолчанию для новых параметров явно заданы.
Примечание.
Учетные данные Windows предоставляются во время выполнения с помощью переменных сценария 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