Как создать моментальный снимок в публикации слиянием с параметризованными фильтрами (программирование репликации на языке Transact-SQL)
При создании моментальных снимков для публикаций с помощью параметризованных фильтров необходимо сначала создать стандарт или схему, моментальный снимок, который будет содержать все опубликованные данные и метаданные подписчика для подписки. Дополнительные сведения см. в разделе Как создать исходный моментальный снимок (программирование репликации на языке Transact-SQL). После создания моментального снимка схемы можно создать моментальный снимок, содержащий секцию опубликованных данных для конкретного подписчика.
С помощью хранимых процедур и агента моментальных снимков можно выполнить следующие действия:
разрешить подписчикам запрашивать создание моментального снимка и применять его при первоначальной синхронизации;
предварительно создать моментальные снимки каждой секции.
создать вручную моментальный снимок для каждого подписчика.
Примечание по безопасности. При возможности предлагайте пользователю ввод учетных данных безопасности во время выполнения. При необходимости хранения учетных данных в файле сценария этот файл следует защитить от несанкционированного доступа.
Создание публикации, которая позволяет подписчикам инициировать формирование и доставку моментальных снимков
В базе данных публикации на издателе, выполните процедуру изменения задержки и проверки соединений для репликации транзакций (sp_addmergepublication (Transact-SQL)). Укажите значения следующих параметров:
имя публикации в качестве значения параметра @publication;
значение true параметра @allow_subscriber_initiated_snapshot, позволяющее подписчикам запускать процесс создания моментального снимка;
допустимое число параллельно выполняемых процессов динамических моментальных снимков в качестве значения параметра @max_concurrent_dynamic_snapshots (необязательно). Если выполняется максимальное число процессов и подписчик пытается создать моментальный снимок, то процесс помещается в очередь. По умолчанию число параллельных процессов не ограничено.
На подписчике выполните хранимую процедуру sp_addpublication_snapshot (Transact-SQL). В качестве значения параметра @publication укажите имя публикации, которое использовалось в шаге 1, а также учетные данные Microsoft Windows, под которыми выполняется Агент моментальных снимков репликации, — в качестве значений параметров @job_login и @password. Если агент при соединении с издателем будет использовать проверку подлинности SQL Server, то необходимо также указать значение 0 для параметра @publisher_security_mode и данные входа Microsoft SQL Server в параметрах @publisher_login и @publisher_password. Будет создано задание агента моментальных снимков для публикации. Дополнительные сведения о формировании исходного моментального снимка и определении пользовательского расписания для агента моментальных снимков см. в разделе Как создать исходный моментальный снимок (программирование репликации на языке Transact-SQL).
Примечание по безопасности При настройке издателя с удаленным распространителем значения, задаваемые для всех аргументов, включая job_login и job_password, отправляются распространителю открытым текстом. Прежде чем выполнять эту хранимую процедуру, необходимо зашифровать соединение между издателем и его удаленным распространителем. Дополнительные сведения см. в разделе Шифрование соединений с SQL Server.
Выполните процедуру sp_addmergearticle (Transact-SQL), чтобы добавить статьи в публикацию. Эту хранимую процедуру необходимо выполнить один раз для каждой статьи в публикации. При использовании параметризованных фильтров необходимо указать параметризованный фильтр строк для одной или нескольких статей, использующих параметр @subset_filterclause. Дополнительные сведения см. в разделе Как определить и изменить параметризованный фильтр строк для статьи публикации слиянием (программирование репликации на языке Transact-SQL).
Если другие статьи будут фильтроваться на основании параметризованного фильтра строк, выполните процедуру sp_addmergefilter (Transact-SQL), чтобы определить между статьями соединение или связь логических записей. Эту хранимую процедуру необходимо выполнить один раз для каждой определяемой связи. Дополнительные сведения см. в разделе Как определить и изменить фильтр соединения между статьями публикации слиянием (программирование репликации на языке Transact-SQL).
Если агент слияния запрашивает инициализацию подписчика моментальным снимком, то автоматически создается моментальный снимок для секции запрашивающей подписки.
Создание публикации и предварительное создание или автоматическое обновление моментальных снимков
Чтобы создать публикацию, выполните хранимую процедуру sp_addmergepublication (Transact-SQL). Дополнительные сведения см. в разделе Как создать публикацию (программирование репликации на языке Transact-SQL).
На подписчике выполните хранимую процедуру sp_addpublication_snapshot (Transact-SQL). Укажите имя публикации, использовавшееся на шаге 1, в параметре @publication, а учетные данные Windows, с которыми работает агент моментальных снимков, — в параметрах @job_login и @password. Если агент при соединении с издателем будет использовать проверку подлинности SQL Server, то необходимо также указать значение 0 для параметра @publisher_security_mode и данные входа SQL Server в параметрах @publisher_login и @publisher_password. Будет создано задание агента моментальных снимков для публикации. Дополнительные сведения о формировании исходного моментального снимка и определении пользовательского расписания для агента моментальных снимков см. в разделе Как создать исходный моментальный снимок (программирование репликации на языке Transact-SQL).
Примечание по безопасности При настройке издателя с помощью удаленного распространителя значения для всех параметров, включая job_login и job_password, отправляются распространителю в виде простого текста. Прежде чем выполнять эту хранимую процедуру, необходимо зашифровать соединение между издателем и его удаленным распространителем. Дополнительные сведения см. в разделе Шифрование соединений с SQL Server.
Выполните процедуру sp_addmergearticle (Transact-SQL), чтобы добавить статьи в публикацию. Эту хранимую процедуру необходимо выполнить один раз для каждой статьи в публикации. При использовании параметризованных фильтров необходимо указать параметризованный фильтр строк для одной статьи, использующей параметр @subset_filterclause. Дополнительные сведения см. в разделе Как определить и изменить параметризованный фильтр строк для статьи публикации слиянием (программирование репликации на языке Transact-SQL).
Если другие статьи будут фильтроваться на основании параметризованного фильтра строк, выполните процедуру sp_addmergefilter (Transact-SQL), чтобы определить между статьями соединение или связь логических записей. Эту хранимую процедуру необходимо выполнить один раз для каждой определяемой связи. Дополнительные сведения см. в разделе Как определить и изменить фильтр соединения между статьями публикации слиянием (программирование репликации на языке Transact-SQL).
На издателе в базе данных публикации выполните хранимую процедуру sp_helpmergepublication (Transact-SQL), при этом укажите значение параметра @publication из шага 1. Запомните значение параметра snapshot_jobid в результирующем наборе.
Преобразуйте значение параметра snapshot_jobid, полученное в шаге 5, в тип uniqueidentifier.
На издателе в базе данных msdb выполните хранимую процедуру sp_start_job (Transact-SQL), при этом присвойте преобразованное значение, полученное в шаге 6, параметру @job_id.
В базе данных публикации на издателе выполните процедуру изменения задержки и проверки соединений для репликации транзакций (sp_addmergepartition (Transact-SQL)). Укажите имя публикации из шага 1 в качестве значения параметра @publication, а также значение, определяющее секцию, в качестве значения параметра @suser_sname, если в предложении фильтра используется функция SUSER_SNAME (Transact-SQL), либо @host_name, если в предложении фильтра используется функция HOST_NAME (Transact-SQL).
На издателе в базе данных публикации выполните хранимую процедуру sp_adddynamicsnapshot_job (Transact-SQL). Укажите имя публикации из шага 1 в качестве значения параметра @publication, значение параметра @suser_sname или @host_name из шага 8, а также расписание для этого задания. Будет создано задание, создающее параметризованный моментальный снимок для указанной секции. Дополнительные сведения см. в разделе Как определить расписания синхронизации (программирование репликации на языке Transact-SQL).
Примечание Это задание выполняется в той же учетной записи Windows, что и задание исходного моментального снимка в шаге 2. Чтобы удалить задание параметризованного моментального снимка и связанную с ним секцию данных, выполните хранимую процедуру sp_dropdynamicsnapshot_job (Transact-SQL).
На издателе в базе данных публикации выполните хранимую процедуру sp_helpmergepartition (Transact-SQL), при этом укажите значение параметра @publication из шага 1 и значение параметра @suser_sname или @host_name из шага 8. Запомните значение параметра dynamic_snapshot_jobid в результирующем наборе.
На распространителе в базе данных msdb выполните хранимую процедуру sp_start_job (Transact-SQL); при этом присвойте значение, полученное в шаге 9, параметру @job_id. Будет запущено задание параметризованного моментального снимка для данной секции.
Чтобы создать секционированный снимок для каждой подписки, повторите шаги 8–11.
Создание публикации и моментальных снимков для каждой секции вручную
Чтобы создать публикацию, выполните хранимую процедуру sp_addmergepublication (Transact-SQL). Дополнительные сведения см. в разделе Как создать публикацию (программирование репликации на языке Transact-SQL).
На подписчике выполните хранимую процедуру sp_addpublication_snapshot (Transact-SQL). Укажите имя публикации, использовавшееся на шаге 1, в параметре @publication, а учетные данные Windows, с которыми работает агент моментальных снимков, — в параметрах @job_login и @password. Если агент при соединении с издателем будет использовать проверку подлинности SQL Server, то необходимо также указать значение 0 для параметра @publisher_security_mode и данные входа SQL Server в параметрах @publisher_login и @publisher_password. Будет создано задание агента моментальных снимков для публикации. Дополнительные сведения о формировании исходного моментального снимка и определении пользовательского расписания для агента моментальных снимков см. в разделе Как создать исходный моментальный снимок (программирование репликации на языке Transact-SQL).
Примечание по безопасности При настройке издателя с помощью удаленного распространителя значения для всех параметров, включая job_login и job_password, отправляются распространителю в виде простого текста. Прежде чем выполнять эту хранимую процедуру, необходимо зашифровать соединение между издателем и его удаленным распространителем. Дополнительные сведения см. в разделе Шифрование соединений с SQL Server.
Выполните процедуру sp_addmergearticle (Transact-SQL), чтобы добавить статьи в публикацию. Эту хранимую процедуру необходимо выполнить один раз для каждой статьи в публикации. При использовании параметризованных фильтров необходимо указать параметризованный фильтр строк хотя бы для одной статьи, использующей параметр @subset_filterclause. Дополнительные сведения см. в разделе Как определить и изменить параметризованный фильтр строк для статьи публикации слиянием (программирование репликации на языке Transact-SQL).
Если другие статьи будут фильтроваться на основании параметризованного фильтра строк, выполните процедуру sp_addmergefilter (Transact-SQL), чтобы определить между статьями соединение или связь логических записей. Эту хранимую процедуру необходимо выполнить один раз для каждой определяемой связи. Дополнительные сведения см. в разделе Как определить и изменить фильтр соединения между статьями публикации слиянием (программирование репликации на языке Transact-SQL).
Чтобы создать стандартную схему моментального снимка и другие файлы, запустите задание моментального снимка или агент моментальных снимков репликации из командной строки. Дополнительные сведения см. в разделе Как создать исходный моментальный снимок (программирование репликации на языке Transact-SQL).
Запустите агент моментальных снимков репликации из командной строки еще раз, чтобы создать файлы массового копирования (BCP-файл); при этом укажите расположение секционированного снимка в качестве значения параметра -DynamicSnapshotLocation, а также одно или оба приведенные ниже свойства, определяющие секцию:
-DynamicFilterHostName, если используется HOST_NAME (Transact-SQL);
-DynamicFilterLogin, если используется SUSER_SNAME (Transact-SQL).
Чтобы создать секционированный снимок для каждой подписки, повторите шаг 6.
Чтобы применить исходный секционированный снимок на подписчиках, запустите агент слияния для каждой подписки; при этом укажите следующие свойства:
-Hostname — значение, с помощью которого определяется секция, если реальное значение параметра HOST_NAME переопределяется;
-DynamicSnapshotLocation — расположение динамического моментального снимка для этой секции.
Примечание |
---|
Дополнительные сведения о программировании агентов репликации см. в разделе Основные понятия об исполняемых объектах агента репликации. |
Пример
В этом примере создается публикация слиянием с параметризованными фильтрами, где подписчики запускают процесс создания моментальных снимков. Значения для параметров @job_login и @job_password передаются с использованием переменных сценария.
-- 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".
--Add a new merge publication.
DECLARE @publicationdb AS sysname;
DECLARE @publication AS sysname;
DECLARE @table1 AS sysname;
DECLARE @table2 AS sysname;
DECLARE @filter AS sysname;
DECLARE @schema_hr AS sysname;
DECLARE @schema_sales AS sysname;
SET @publicationdb = N'AdventureWorks2008R2';
SET @publication = N'AdvWorksSalesPersonMerge';
SET @table1 = N'Employee';
SET @table2 = N'SalesPerson';
SET @filter = N'SalesPerson_Employee';
SET @schema_hr = N'HumanResources';
SET @schema_sales = N'Sales';
USE [AdventureWorks2008R2];
-- Enable AdventureWorks2008R2 for merge replication.
EXEC sp_replicationdboption
@dbname = @publicationdb,
@optname = N'merge publish',
@value = N'true';
-- Create new merge publication with Subscriber requested snapshot
-- and using the default agent schedule.
EXEC sp_addmergepublication
@publication = @publication,
@description = N'Merge publication of AdventureWorks2008R2.',
@allow_subscriber_initiated_snapshot = N'true',
@publication_compatibility_level = N'90RTM';
-- Create a new snapshot job for the publication, using the default schedule.
-- Pass credentials at runtime using sqlcmd scripting variables.
EXEC sp_addpublication_snapshot
@publication = @publication,
@job_login = $(login),
@job_password = $(password);
-- Add an article for the Employee table,
-- which is horizontally partitioned using
-- a parameterized row filter.
EXEC sp_addmergearticle
@publication = @publication,
@article = @table1,
@source_owner = @schema_hr,
@source_object = @table1,
@type = N'table',
@description = 'contains employee information',
@subset_filterclause = N'[LoginID] = HOST_NAME()';
-- Add an article for the SalesPerson table,
-- which is partitioned based on a join filter.
EXEC sp_addmergearticle
@publication = @publication,
@article = @table2,
@source_owner = @schema_sales,
@source_object = @table2,
@type = N'table',
@description = 'contains salesperson information';
-- Add a join filter between the two articles.
EXEC sp_addmergefilter
@publication = @publication,
@article = @table1,
@filtername = @filter,
@join_articlename = @table2,
@join_filterclause = N'[Employee].[BusinessEntityID] = [SalesPerson].[SalesPersonID]',
@join_unique_key = 1,
@filter_type = 1;
GO
-- Start the agent job to generate the full snapshot for the publication.
-- The filtered data snapshot is generated automatically the first time
-- the subscription is synchronized.
DECLARE @publication AS sysname;
SET @publication = N'AdvWorksSalesPersonMerge';
EXEC sp_startpublication_snapshot
@publication = @publication;
GO
В этом примере публикация создается с помощью параметризованного фильтра, где для каждого подписчика с помощью хранимой процедуры sp_addmergepartition определена своя секция, а также путем выполнения хранимой процедуры sp_adddynamicsnapshot_job, передающей сведения о секционировании, создано фильтруемое задание моментального снимка. Значения для параметров @job_login и @job_password передаются с использованием переменных сценария.
-- 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".
--Add a new merge publication.
DECLARE @publicationdb AS sysname;
DECLARE @publication AS sysname;
DECLARE @table1 AS sysname;
DECLARE @table2 AS sysname;
DECLARE @filter AS sysname;
DECLARE @schema_hr AS sysname;
DECLARE @schema_sales AS sysname;
SET @publicationdb = N'AdventureWorks2008R2';
SET @publication = N'AdvWorksSalesPersonMerge';
SET @table1 = N'Employee';
SET @table2 = N'SalesPerson';
SET @filter = N'SalesPerson_Employee';
SET @schema_hr = N'HumanResources';
SET @schema_sales = N'Sales';
USE [AdventureWorks2008R2];
-- Enable AdventureWorks2008R2 for merge replication.
EXEC sp_replicationdboption
@dbname = @publicationdb,
@optname = N'merge publish',
@value = N'true';
-- Create new merge publication.
EXEC sp_addmergepublication
@publication = @publication,
@description = N'Merge publication of AdventureWorks2008R2.',
@allow_subscriber_initiated_snapshot = N'false';
-- Create a new snapshot job for the publication, using the
-- default schedule. Pass credentials at runtime using
-- sqlcmd scripting variables.
EXEC sp_addpublication_snapshot
@publication = @publication,
@job_login = $(Login),
@job_password = $(password);
-- Add an article for the Employee table,
-- which is horizontally partitioned using
-- a parameterized row filter.
EXEC sp_addmergearticle
@publication = @publication,
@article = @table1,
@source_owner = @schema_hr,
@source_object = @table1,
@type = N'table',
@description = 'contains employee information',
@subset_filterclause = N'[LoginID] = HOST_NAME()';
-- Add an article for the SalesPerson table,
-- which is partitioned based on a join filter.
EXEC sp_addmergearticle
@publication = @publication,
@article = @table2,
@source_owner = @schema_sales,
@source_object = @table2,
@type = N'table',
@description = 'contains customer information';
-- Add a join filter between the two articles.
EXEC sp_addmergefilter
@publication = @publication,
@article = @table1,
@filtername = @filter,
@join_articlename = @table2,
@join_filterclause = N'[Employee].[BusinessEntityID] = [SalesPerson].[SalesPersonID]',
@join_unique_key = 1,
@filter_type = 1;
GO
-- Start the snapshot agent job.
DECLARE @publication AS sysname;
SET @publication = N'AdvWorksSalesPersonMerge';
EXEC sp_startpublication_snapshot
@publication = @publication;
GO
PRINT '*** Waiting for the initial snapshot.';
GO
-- Create a temporary table to store the filtered data snapshot
-- job information.
CREATE TABLE #temp (id int,
job_name sysname,
job_id uniqueidentifier,
dynamic_filter_login sysname NULL,
dynamic_filter_hostname sysname NULL,
dynamic_snapshot_location nvarchar(255),
frequency_type int,
frequency_interval int,
frequency_subday_type int,
frequency_subday_interval int,
frequency_relative_interval int,
frequency_recurrence_factor int,
active_start_date int,
active_end_date int,
active_start_time int,
active_end_time int
)
-- Create each snapshot for a partition
-- The initial snapshot must already be generated.
DECLARE @publication AS sysname;
DECLARE @jobname AS sysname
DECLARE @hostname AS sysname
SET @publication = N'AdvWorksSalesPersonMerge';
SET @hostname = N'adventure-works\Fernando';
WHILE NOT EXISTS(SELECT * FROM sysmergepublications
WHERE [name] = @publication
AND snapshot_ready = 1)
BEGIN
WAITFOR DELAY '00:00:05'
END
-- Create a data partition by overriding HOST_NAME().
EXEC sp_addmergepartition
@publication = @publication,
@host_name = @hostname;
-- Create the filtered data snapshot job, and use the returned
-- information to start the job.
EXEC sp_adddynamicsnapshot_job
@publication = @publication,
@host_name = @hostname;
INSERT INTO #temp (id, job_name, job_id, dynamic_filter_login,
dynamic_filter_hostname, dynamic_snapshot_location,
frequency_type, frequency_interval, frequency_subday_type,
frequency_subday_interval, frequency_relative_interval,
frequency_recurrence_factor, active_start_date, active_end_date,
active_start_time,active_end_time)
EXEC sp_helpdynamicsnapshot_job;
SELECT @jobname = (SELECT DISTINCT job_name FROM #temp WHERE dynamic_filter_hostname = @hostname);
EXEC msdb..sp_start_job @job_name = @jobname;
DROP TABLE #temp;
GO
В этом примере публикация создается с помощью параметризованного фильтра, где путем передачи сведений о секционировании для подписчика должна создаваться своя секция данных и фильтруемое задание моментального снимка. Подписчик передает сведения о секционировании с помощью параметров командной строки, если агенты репликации запускаются вручную. В этом примере предполагается, что также уже создана подписка на публикацию.
-- 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".
--Add a new merge publication.
DECLARE @publicationdb AS sysname;
DECLARE @publication AS sysname;
DECLARE @table1 AS sysname;
DECLARE @table2 AS sysname;
DECLARE @filter AS sysname;
DECLARE @schema_hr AS sysname;
DECLARE @schema_sales AS sysname;
SET @publicationdb = N'AdventureWorks2008R2';
SET @publication = N'AdvWorksSalesPersonMerge';
SET @table1 = N'Employee';
SET @table2 = N'SalesPerson';
SET @filter = N'SalesPerson_Employee';
SET @schema_hr = N'HumanResources';
SET @schema_sales = N'Sales';
USE [AdventureWorks2008R2];
-- Enable AdventureWorks2008R2 for merge replication.
EXEC sp_replicationdboption
@dbname = @publicationdb,
@optname = N'merge publish',
@value = N'true';
-- Create new merge publication.
EXEC sp_addmergepublication
@publication = @publication,
@description = N'Merge publication of AdventureWorks2008R2.',
@allow_subscriber_initiated_snapshot = N'false';
-- Create a new snapshot job for the publication, using the
-- default schedule. Pass credentials at runtime using
-- sqlcmd scripting variables.
EXEC sp_addpublication_snapshot
@publication = @publication,
@job_login = $(Login),
@job_password = $(Password);
-- Add an article for the Employee table,
-- which is horizontally partitioned using
-- a parameterized row filter.
EXEC sp_addmergearticle
@publication = @publication,
@article = @table1,
@source_owner = @schema_hr,
@source_object = @table1,
@type = N'table',
@description = 'contains employee information',
@subset_filterclause = N'[LoginID] = HOST_NAME()';
-- Add an article for the SalesPerson table,
-- which is partitioned based on a join filter.
EXEC sp_addmergearticle
@publication = @publication,
@article = @table2,
@source_owner = @schema_sales,
@source_object = @table2,
@type = N'table',
@description = 'contains customer information';
-- Add a join filter between the two articles.
EXEC sp_addmergefilter
@publication = @publication,
@article = @table1,
@filtername = @filter,
@join_articlename = @table2,
@join_filterclause = N'[Employee].[BusinessEntityID] = [SalesPerson].[SalesPersonID]',
@join_unique_key = 1,
@filter_type = 1;
GO
REM Line breaks are added to improve readability.
REM In a batch file, commands must be made in a single line.
REM Run the Snapshot agent from the command line to generate the standard snapshot
REM schema and other files.
SET DistPub=%computername%
SET PubDB=AdventureWorks2008R2
SET PubName=AdvWorksSalesPersonMerge
"C:\Program Files\Microsoft SQL Server\100\COM\SNAPSHOT.EXE" -Publication %PubName%
-Publisher %DistPub% -Distributor %DistPub% -PublisherDB %PubDB% -ReplicationType 2
-OutputVerboseLevel 1 -DistributorSecurityMode 1
PAUSE
REM Run the Snapshot agent from the command line, this time to generate
REM the bulk copy (.bcp) data for each Subscriber partition.
SET DistPub=%computername%
SET PubDB=AdventureWorks2008R2
SET PubName=AdvWorksSalesPersonMerge
SET SnapshotDir=\\%DistPub%\repldata\unc\fernando
MD %SnapshotDir%
"C:\Program Files\Microsoft SQL Server\100\COM\SNAPSHOT.EXE" -Publication %PubName%
-Publisher %DistPub% -Distributor %DistPub% -PublisherDB %PubDB% -ReplicationType 2
-OutputVerboseLevel 1 -DistributorSecurityMode 1 -DynamicFilterHostName "adventure-works\Fernando"
-DynamicSnapshotLocation %SnapshotDir%
PAUSE
REM Run the Merge Agent for each subscription to apply the partitioned
REM snapshot for each Subscriber.
SET Publisher = %computername%
SET Subscriber = %computername%
SET PubDB = AdventureWorks2008R2
SET SubDB = AdventureWorks2008R2Replica
SET PubName = AdvWorksSalesPersonMerge
SET SnapshotDir=\\%DistPub%\repldata\unc\fernando
"C:\Program Files\Microsoft SQL Server\100\COM\REPLMERG.EXE" -Publisher %Publisher%
-Subscriber %Subscriber% -Distributor %Publisher% -PublisherDB %PubDB%
-SubscriberDB %SubDB% -Publication %PubName% -PublisherSecurityMode 1 -OutputVerboseLevel 3
-Output -SubscriberSecurityMode 1 -SubscriptionType 3 -DistributorSecurityMode 1
-Hostname "adventure-works\Fernando" -DynamicSnapshotLocation %SnapshotDir%
PAUSE
См. также