Предполагая, что публикация уже существует (и допустимый моментальный снимок доступен в допустимой папке), здесь приведены инструкции по T-SQL и командной строке, необходимые для запуска и поддержки подписки как для издателя, так и для подписчика. Мы используем этот код для запуска веб-репликации с нуля (без базы данных на стороне подписчика). После того, как подписка объявлена с обеих сторон с помощью хранимых процедур, вы должны (на регулярной основе) выполнять инструкцию командной строки синхронизации на стороне подписчика (см. Ниже).
Поскольку этот код относится только к веб-репликации, ознакомьтесь с дополнительными ссылками на организацию такой репликации на вашем сервере, включая параметры публикации и т. Д. Все материалы, связанные с безопасностью, можно найти в соответствующих документах. Конечно, параметры командной строки синхронизации строго связаны с конкретной подпиской и ее параметрами. Если ваша подписка не осуществляется через Интернет (как в этом примере), вам придется соответственно настроить параметры публикации, подписки и синхронизации. Обратите внимание, что многие параметры здесь отражают нашу конкретную ситуацию, когда, например, издатель также является подписчиком. Возможно, вам придется адаптироваться в зависимости от вашей ситуации.
PS: сервер SQLEXPRESS не может быть издателем. Вам нужно будет получить полную версию SQL для публикации вашей базы данных. Серверы SQLEXPRESS могут быть Подписчиками.
Код издателя: один sp
exec sp_addmergesubscription
@publication = N'myPublication',
@subscriber = N'mySuscriber\SQLEXPRESS',
@subscriber_db = N'myDatabaseOnMySubscriber',
@subscription_type = N'pull',
@subscriber_type = N'local',
@subscription_priority = 0,
@sync_type = N'Automatic'
go
Код абонента: два sp
exec sp_addmergepullsubscription
@publisher = N'myServerName',
@publication = N'myPublicationName',
@publisher_db = N'myMainDatabase',
@subscriber_type = N'Local',
@subscription_priority = 0,
@description = N'',
@sync_type = N'Automatic'
exec sp_addmergepullsubscription_agent
@publisher = N'myServername',
@publisher_db = N'myMainDatabase',
@publication = N'myDatabaseOnMySubscriber',
@distributor = N'myServerName',
@distributor_security_mode = 1,
@distributor_login = N'',
@distributor_password = N'',
@enabled_for_syncmgr = N'True',
@frequency_type = 4,
@frequency_interval = 1,
@frequency_relative_interval = 1,
@frequency_recurrence_factor = 0,
@frequency_subday = 8,
@frequency_subday_interval = 1,
@active_start_time_of_day = 0,
@active_end_time_of_day = 235959,
@active_start_date = 0,
@active_end_date = 0,
@alt_snapshot_folder = N'',
@working_directory = N'',
@use_ftp = N'True',
@job_login = null,
@job_password = null,
@publisher_security_mode = 1,
@publisher_login = N'',
@publisher_password = N'',
@use_interactive_resolver = N'False',
@dynamic_snapshot_location = N'',
@use_web_sync = 1,
@internet_url = N'https://mySecuredWebPage:myOpenPort/myPublicationName/replisapi.dll',
@internet_login = N'myDomain\myUserName',
@internet_password = null,
@internet_security_mode = 0,
@internet_timeout = 300
go
Абонентский BAT-файл для синхронизации
"C:\Program Files\Microsoft SQL Server\90\COM\replmerg.exe"
-Publisher [myServerName]
-PublisherDB [myMainDatabase]
-Publication [myPublicationName]
-Distributor [myServerName]
-Subscriber [mySubscriber\SQLEXPRESS]
-SubscriptionType 1
-SubscriberSecurityMode 1
-SubscriberDB [myDatabaseOnMySubscriber]
-InternetURL [https://mySecuredWebPage:myOpenPort/myPublicationName/replisapi.dll]
-InternetLogin [myDomain\myUserName]
-InternetPassword [myPassword]