Агент распространения репликации

Область применения: SQL Server База данных SQL Azure

Агент распространения репликации — это исполняемый файл, который перемещает моментальный снимок (для репликации моментальных снимков или транзакций) и транзакции, находящиеся в таблицах базы данных распространителя (для репликации транзакций), в конечные таблицы в подписчиках.

Примечание.

Параметры можно указывать в любом порядке. Если необязательные параметры не указаны, используются значения из предопределенных параметров реестра на локальном компьютере.

Синтаксис

distrib [ -? ]
-Publisher server_name [ \instance_name ]
-PublisherDB publisher_database
-Subscriber server_name [ \instance_name ]
-SubscriberDB subscriber_database
[ -AltSnapshotFolder alt_snapshot_folder_path ]
[ -BcpBatchSize bcp_batch_size ]
[ -CommitBatchSize commit_batch_size ]
[ -CommitBatchThreshold commit_batch_threshold ]
[ -Continuous ]
[ -DefinitionFile def_path_and_file_name ]
[ -Distributor distributor ]
[ -DistributorLogin distributor_login ]
[ -DistributorPassword distributor_password ]
[ -DistributorSecurityMode [ 0 | 1 ] ]
[ -EncryptionLevel [ 0 | 1 | 2 ] ]
[ -ErrorFile error_path_and_file_name ]
[ -ExtendedEventConfigFile configuration_path_and_file_name ]
[ -FileTransferType [ 0 | 1 ] ]
[ -FtpAddress ftp_address ]
[ -FtpPassword ftp_password ]
[ -FtpPort ftp_port ]
[ -FtpUserName ftp_user_name ]
[ -HistoryVerboseLevel [ 0 | 1 | 2 | 3 ] ]
[ -Hostname host_name ]
[ -KeepAliveMessageInterval keep_alive_message_interval_seconds ]
[ -LoginTimeOut login_time_out_seconds ]
[ -MaxBcpThreads ]
[ -MaxDeliveredTransactions number_of_transactions ]
[ -MessageInterval message_interval ]
[ -MultiSubnetFailover [ 0 | 1 ] ]
[ -OledbStreamThreshold oledb_stream_threshold ]
[ -Output output_path_and_file_name ]
[ -OutputVerboseLevel [ 0 | 1 | 2 ] ]
[ -PacketSize packet_size ]
[ -PollingInterval polling_interval ]
[ -ProfileName profile_name ]
[ -Publication publication ]
[ -QueryTimeOut query_time_out_seconds ]
[ -QuotedIdentifier quoted_identifier ]
[ -SkipErrors native_error_id [ :...n ] ]
[ -SubscriberDatabasePath subscriber_path ]
[ -SubscriberLogin subscriber_login ]
[ -SubscriberPassword subscriber_password ]
[ -SubscriberSecurityMode [ 0 | 1 ] ]
[ -SubscriberType [ 0 | 1 | 3 ] ]
[ -SubscriptionStreams [ 1 | 2 | ...64 ] ]
[ -SubscriptionTableName subscription_table ]
[ -SubscriptionType [ 0 | 1 | 2 ] ]
[ -TransactionsPerHistory [ 0 | 1 | ...10000 ] ]
[ -UseDTS ]
[ -UseInprocLoader ]
[ -UseOledbStreaming ]

Аргументы

-?

Выводит список всех доступных параметров.

-Publisher server_name [ \instance_name ]

Имя издателя. Укажите <server_name> для экземпляра Microsoft SQL Server по умолчанию на этом сервере. Укажите <server_name>\<instance_name> именованный экземпляр SQL Server на этом сервере. Если база данных издателя находится в группе доступности (AG), это по-прежнему отражает исходное имя сервера издателя-источника из-за sp_redirect_publisher. Он не отражает имя прослушивателя группы доступности.

-PublisherDB publisher_database

Имя базы данных издателя.

-Подписчик server_name [ \instance_name ]

Имя подписчика. Укажите <server_name> для экземпляра SQL Server по умолчанию на этом сервере. Укажите <server_name>\<instance_name> именованный экземпляр SQL Server на этом сервере. Если база данных подписчика находится в группе доступности, это должно отражать имя прослушивателя группы доступности.

-ПодписчикDB subscriber_database

Имя базы данных подписчика.

-ALTSnapshotFolder alt_snapshot_folder_path

Путь к папке, содержащей начальный моментальный снимок для подписки.

-BcpBatchSize bcp_batch_size

Количество строк для отправки в операции массового копирования. При выполнении bcp in операции размер пакета — это количество строк для отправки на сервер в виде одной транзакции, а также количество строк, которые должны отправляться до агент распространения записывает сообщение о ходе выполнения bcp. При выполнении bcp out операции используется фиксированный размер 1000 пакета.

-CommitBatchSize commit_batch_size

Число транзакций, выданных подписчику до выдачи инструкции COMMIT. Значение по умолчанию равно 100, а максимальное — 10 000. Этот параметр игнорируется при применении моментального снимка на подписчике агент распространения.

-CommitBatchThreshold commit_batch_threshold

Количество команд репликации, выдаваемых подписчику перед выдачой инструкции COMMIT. Значение по умолчанию равно 1000, а максимальное — 10 000. Этот параметр игнорируется при применении моментального снимка на подписчике агент распространения.

-Continuous

Определяет, будет ли агент постоянно опрашивать реплицируемые транзакции. Если параметр задан, то даже при отсутствии ожидающих транзакций агент опрашивает реплицируемые транзакции с источника через интервалы опроса.

-DefinitionFile def_path_and_file_name

Путь к файлу определения агента. Файл определения агента содержит параметры командной строки для агента. Содержимое файла анализируется как для исполняемого файла. Для указания значений параметров, содержащих произвольные символы, используются двойные кавычки (").

-Распространитель

Имя распространителя. Для принудительного распространения по умолчанию используется имя локального распространителя. Если база данных распространителя находится в группе доступности, это должно отражать имя прослушивателя группы доступности.

-DistributorLogin distributor_login

Имя входа распространителя.

-DistributorPassword distributor_password

Пароль распространителя.

-DistributorSecurityMode [ 0 | 1 ]

Указывает режим безопасности распространителя. Значение 0 указывает режим проверки подлинности SQL Server, а значение 1 указывает режим проверки подлинности Windows (по умолчанию).

-EncryptionLevel [ 0 | 1 | 2 ]

Уровень безопасности транспортного уровня (TLS), ранее известный как протокол SSL, шифрование, используемое агент распространения при подключении.

Значение EncryptionLevel Description
0 Указывает, что TLS не используется.
1 Указывает, что используется TLS, но агент не проверяет, подписан ли сертификат сервера TLS доверенным издателем.
2 Указывает, что TLS используется и сертификат подтвержден.

Допустимый сертификат TLS определяется с полным доменным именем SQL Server. Чтобы агент успешно подключился при настройке, -EncryptionLevel 2создайте псевдоним на локальном сервере SQL Server. Для параметра Alias Name (Имя псевдонима) должно быть указано имя сервера, а для параметра Server (Сервер) — полное доменное имя SQL Server.

Дополнительные сведения см. в статье View and Modify Replication Security Settings.

-ErrorFile error_path_and_file_name

Путь и имя файла ошибки, созданного агент распространения. Этот файл создается в любой момент, когда произошел сбой при применении транзакций репликации на подписчике; Ошибки, возникающие на издателе или распространителю, не регистрируются в этом файле. Этот файл содержит транзакции репликации, завершившиеся ошибкой, и соответствующие сообщения об ошибках. Если параметр не указан, файл ошибок создается в текущем каталоге агента распространителя. Его именем будет имя агента распространителя с расширением ERR. Если файл с указанным именем уже существует, то сообщения об ошибках будут добавляться в существующий файл. Длина параметра не должна превышать 256 символов Юникода.

-ExtendedEventConfigFile configuration_path_and_file_name

Задает путь и имя файла для XML-файла конфигурации расширенных событий. Файл конфигурации расширенных событий позволяет настраивать сеансы и включать события для трассировки.

-FileTransferType [ 0 | 1 ]

Определяет тип передачи файла. Значение 0 указывает UNC (соглашение об универсальном именовании), а значение 1 указывает FTP (протокол передачи файлов).

-FtpAddress ftp_address

Сетевой адрес службы FTP для распространителя. Если этот параметр не указан, DistributorAddress используется. Если DistributorAddress он не указан, Distributor используется.

-FtpPassword ftp_password

Пароль пользователя для подключения к службе FTP.

-FtpPort ftp_port

Номер порта службы FTP для распространителя. Если не указан, используется порт службы FTP по умолчанию (21).

-FtpUserName ftp_user_name

Пароль пользователя для подключения к службе FTP. Если этот параметр не указан, anonymous используется.

-HistoryVerboseLevel [ 0 | 1 | 2 | 3 ]

Указывает объем данных, регистрируемых в журнале во время операции распространения. Вы можете свести к минимуму влияние журнала журнала, выбрав 1.

Значение HistoryVerboseLevel Description
0 Сообщения о ходе работы записываются либо в консоль, либо в выходной файл. Записи журнала не регистрируются в базе данных распространителя.
1 (по умолчанию) Всегда обновлять предыдущее сообщение журнала с таким же состоянием (запуск, выполнение, успех и т. д.). Если предыдущих сообщений с таким состоянием нет, то вставить новую запись.
2 Если есть сообщения о таких событиях, как состояние простоя или долго выполняемое задание, то обновить предыдущие записи, в противном случае вставить новые записи журнала.
3 Всегда вставлять новые записи, если только оно не используется для неактивных сообщений.

-Hostname host_name

Имя узла, используемое при подключении к издателю. Длина параметра не должна превышать 128 символов Юникода.

-KeepAliveMessageInterval keep_alive_message_interval_seconds

Количество секунд до того, как поток журнала проверяет, ожидает ли какой-либо из существующих подключений ответ от сервера. Это значение можно уменьшить, чтобы во время проверки при выполнении длительной пакетной операции агент распространителя не был помечен как подозрительный. Значение по умолчанию — 300 секунды.

-LoginTimeOut login_time_out_seconds

Количество секунд до истечения времени ожидания входа. Значение по умолчанию — 15 секунды.

-MaxBcpThreads number_of_threads

Указывает число операций массового копирования, которые можно проводить параллельно. Максимальное количество потоков и подключений ODBC, которые существуют одновременно, меньше MaxBcpThreads или количество запросов массового копирования, которые отображаются в транзакции синхронизации в базе данных распространителя. MaxBcpThreads должно иметь значение больше, чем 0 и не имеет жестко закодированного верхнего предела. Значение по умолчанию — 2 это число процессоров до максимального значения 8. При применении моментального снимка, созданного на издателе с помощью параметра параллельного моментального снимка, используется один поток независимо от указанного MaxBcpThreadsчисла.

-MaxDeliveredTransactions number_of_transactions

Максимальное количество транзакций отправки или извлечения, примененных к подписчикам в одной синхронизации. Значение 0 указывает, что максимальное — бесконечное число транзакций. Другие значения могут использоваться подписчиками для сокращения длительности процесса синхронизации, запущенного с издателя.

Если -MaxDeliveredTransactions и -Continuous оба указаны, агент распространения доставляет указанное количество транзакций, а затем останавливается (даже если -Continuous указано). После завершения задания необходимо перезапустить агент распространителя.

-MessageInterval message_interval

Интервал времени, используемый для ведения журнала. Событие записывается в журнал при достижении одного из следующих параметров.

  • Значение TransactionsPerHistory достигается после регистрации последнего события журнала.

  • Значение MessageInterval достигается после регистрации последнего события журнала.

Если в источнике реплицированная транзакция отсутствует, агент сообщает о отсутствии транзакций распространителю. Данный параметр определяет период ожидания агента до передачи следующего сообщения об отсутствии транзакции. Агенты всегда передают сообщение об отсутствии транзакции, если на источнике после ранее обработанных реплицируемых транзакций не обнаруживается доступных транзакций. Значение по умолчанию ― 60 секунд.

-MultiSubnetFailover

Область применения: SQL Server 2019 (15.x) и более поздних версий.

Указывает, включено ли свойство MultiSubnetFailover. Если приложение подключается к группе доступности в разных подсетях, параметр MultiSubnetFailover=true обеспечивает быстрое обнаружение и подключение к активному серверу (в настоящее время).

-OledbStreamThreshold oledb_stream_threshold

Указывает минимальный размер в байтах для данных двоичного большого объекта, над которыми данные привязаны в виде потока. Этот параметр необходимо указать -UseOledbStreaming . Значения могут варьироваться от 400 байт до 1 048 576 байт, при этом значение по умолчанию составляет 16 384 байта.

-Output output_path_and_file_name

Путь к выходному файлу агента. Если имя файла не указано, выходные данные отправляются в консоль. Если указанный файл существует, то выходные данные добавляются в конец файла.

-OutputVerboseLevel [ 0 | 1 | 2 ]

Указывает, должны ли выводимые данные быть подробными. Если подробный уровень равен 0, печатаются только сообщения об ошибках. Если подробный уровень 1равен, все сообщения отчета о ходе выполнения печатаются. Если подробный уровень равен 2 (по умолчанию), все сообщения об ошибках и сообщения отчета о ходе выполнения печатаются, что полезно для отладки.

-PacketSize packet_size

Размер пакета в байтах. Значение по умолчанию равно 4 096 байт.

-PollingInterval polling_interval

Сколько раз в секундах база данных распространителя запрашивается для реплицированных транзакций. Значение по умолчанию — 5 секунд.

-ProfileName profile_name

Указывает профиль агента, из которого берутся параметры агента. Если ProfileName это NULLтак, профиль агента отключен. Если ProfileName это не указано, используется профиль по умолчанию для типа агента. Дополнительные сведения см. в статье Профили агента репликации.

-Публикация публикации

Имя публикации. Этот параметр допустим только в том случае, если в данной публикации моментальный снимок всегда доступен для новых или повторно инициализированных подписок.

-QueryTimeOut query_time_out_seconds

Количество секунд до истечения времени ожидания запроса. Значение по умолчанию — 1800 секунд.

-QuotedIdentifier quoted_identifier

Указывает символ, применяемый для идентификаторов, заключенных в кавычки. Первый символ значения указывает значение, используемое агентом распространителя. Если QuotedIdentifier используется без значения, агент распространения использует пробел. Если QuotedIdentifier он не используется, агент распространения использует любой идентификатор кавычек, поддерживаемый подписчиком.

-SkipErrors native_error_id [ :... n ]

Список с разделителями двоеточия, указывающий числа ошибок, пропущенные этим агентом. Этот параметр игнорируется при применении моментального снимка на подписчике агент распространения.

-SubscriberDatabasePath subscriber_database_path

Путь к базе данных Jet (.mdb файлу), если SubscriberType ( 2 разрешает подключение к базе данных Jet без имени источника данных ODBC (DSN)).

-SubscriberLogin subscriber_login

Имя входа подписчика. Если SubscriberSecurityMode используется 0 (для проверки подлинности SQL Server), этот параметр должен быть указан.

-SubscriberPassword subscriber_password

Пароль подписчика. Если SubscriberSecurityMode используется 0 (для проверки подлинности SQL Server), этот параметр должен быть указан.

-SubscriberSecurityMode [ 0 | 1 ]

Определяет режим безопасности подписчика. Значение, указывающее 0 проверку подлинности SQL Server и значение 1 , указывающее режим проверки подлинности Windows (по умолчанию).

-SubscriberType [ 0 | 1 | 3 ]

Указывает тип соединения с подписчиком, используемый агентом распространителя.

Значение SubscriberType Description
0 SQL Server
1 Источник данных ODBC
3 OLE DB, источник данных

-SubscriptionStreams [ 0 | 1 | 2 | ... 64 ]

Количество подключений, разрешенных для каждого агент распространения применять пакеты изменений параллельно подписчику, сохраняя при использовании одного потока множество характеристик транзакций. Для издателя SQL Server поддерживается диапазон значений от 1 до 64.

Этот параметр не поддерживается или должен быть 0 для подписчиков, отличных от SQL Server, или одноранговых подписок. Этот параметр игнорируется при применении моментального снимка на подписчике агент распространения.

Если одно из подключений не выполняется или фиксируется, все подключения прерывают текущий пакет, а агент использует один поток для повторных попыток неудачных пакетов. Перед завершением фазы выполнения повторной попытки могут существовать временные несоответствия транзакций на подписчике. После успешной фиксации всех поврежденных пакетов подписчик возвращается в состояние согласованности транзакций.

Внимание

Если указать значение или большее -SubscriptionStreamsзначение2, порядок получения транзакций на подписчике может отличаться от порядка, в котором они были сделаны на издателе. Если это поведение вызывает нарушения ограничений во время синхронизации, следует использовать NOT FOR REPLICATION параметр, чтобы отключить принудительное применение ограничений во время синхронизации. Дополнительные сведения см. в разделе "Управление поведением триггеров и ограничений в синхронизации".

Потоки подписок не работают для статей, настроенных для доставки Transact-SQL. Чтобы использовать потоки подписок, настройте статьи для доставки вызовов хранимой процедуры.

-SubscriptionTableName subscription_table

Имя таблицы подписки, созданной или используемой на данном подписчике. Если это не указано, используется таблица MSreplication_subscriptions . Используйте этот параметр для систем управления базами данных (СУБД), которые не поддерживают длинные имена файлов.

-SubscriptionType [ 0 | 1 | 2 ]

Определяет тип подписки для распространения. Значение, указывающее 0 push-подписку, значение 1 указывает подписку на вытягивание, а значение 2 указывает анонимную подписку.

-TransactionsPerHistory [ 0 | 1 | ... 10000 ]

Указывает интервал транзакций для регистрации журналов. Сообщение записывается в журнал, как только число зафиксированных транзакций после последней записи в журнал превысило значение этого параметра. Значение по умолчанию равно 100. Значение, указывающее 0 бесконечное TransactionsPerHistory. См. предыдущий –MessageIntervalпараметр.

-UseDTS

Должен быть указан в качестве параметра для публикации, для которой разрешено преобразование данных.

-UseInprocLoader

Повышает производительность исходного моментального снимка, заставляя агент распространителя использовать команду BULK INSERT при применении файлов моментальных снимков к подписчику. Этот параметр не рекомендуется использовать, так как он несовместим с типом данных XML. Если вы не реплицируете XML-данные, этот параметр можно использовать. Этот параметр нельзя использовать с моментальными снимками режима символов или подписчиками, не являющихся подписчиками SQL Server. Если вы используете этот параметр, учетная запись службы SQL Server на подписчике требует разрешений на чтение в каталоге, где находятся файлы данных моментального снимка .bcp . Если этот параметр не используется, агент (для подписчиков, отличных от SQL Server) или драйвер ODBC, загруженный агентом (для подписчиков SQL Server), считывает из файлов, поэтому контекст безопасности учетной записи службы SQL Server не используется.

-UseOledbStream

Если этот параметр указан, то разрешает привязку двоичных данных больших объектов в виде потока. Используется -OledbStreamThreshold для указания размера в байтах, над которым используется поток. UseOledbStreaming включен по умолчанию.

В SQL Server 2017 (14.x) CU 22 и более поздних версий UseOledbStreaming записывается в папку C:\Users\<DistributionAgentAccount>\AppData\Temp .

Перед SQL Server 2017 (14.x) CU 22 записывается UseOledbStreaming в папку C:\Program Files\Microsoft SQL Server\<version>\COM .

В SQL Server 2019 (15.x) CU 29 можно отключить потоковую передачу OLE DB, обновив-UseOledbStreaming, чтобы 0 избежать ошибки, указанной в сообщении об ошибке при запуске агент распространения в SQL Server.

Замечания

Если вы установили агент SQL Server для запуска под локальной системной учетной записью, а не под учетной записью пользователя домена (по умолчанию), служба может получить доступ только к локальному компьютеру. Если агент распространения, запущенные в агент SQL Server, настроены для использования режима проверки подлинности Windows при входе в экземпляр SQL Server, агент распространения завершается ошибкой. По умолчанию используется проверка подлинности SQL Server. Дополнительные сведения об изменении учетных записей безопасности см. в разделе View and Modify Replication Security Settings.

Чтобы запустить агент распространения, выполните команду distrib.exe из командной строки. Дополнительные сведения см. в статье Основные понятия исполняемых файлов агента репликации.