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

Применимо к: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 для экземпляра Microsoft SQL Server по умолчанию на этом сервере. Укажите server_name instance_name\ для именованного экземпляра SQL Server на этом сервере. Если ваша база данных издателя находится в группе доступности Always On, она по-прежнему будет отражать исходное имя основного сервера издателя из-за sp_redirect_publisher. Она не будет отражать имя прослушивателя группы доступности.

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

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

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

-AltSnapshotFolderalt_snapshot_folder_path
Путь к папке, где хранится исходный моментальный снимок для подписки.

-BcpBatchSizebcp_batch_size
Число строк для отправки при операции массового копирования. При выполнении операции bcp in размер пакета равен числу строк для отправки на сервер в одной транзакции, а также числу строк, которые необходимо отправить до того, как агент распространителя зарегистрирует сообщение о ходе выполнения от программы bcp . При выполнении операции bcp out используются пакеты фиксированного размера ( 1000 ).

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

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

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

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

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

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

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

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

-EncryptionLevel [ 0 | 1 | 2 ]
Уровень шифрования по протоколу TLS (ранее — SSL), который используется агентом распространения при установлении соединений.

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

Примечание.

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

Дополнительные сведения см. в статье Просмотр и изменение параметров безопасности репликации.

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

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

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

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

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

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

-FtpUserNameftp_user_name
Имя пользователя для соединения со службой FTP. Если не указано, то будет использовано имя anonymous .

-HistoryVerboseLevel [ 0 | 1 | 2 | 3 ]
Указывает объем данных, регистрируемых в журнале во время операции распространения. Влияние на производительность, оказываемое ведением журнала, можно максимально уменьшить, выбрав значение 1.

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

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

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

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

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

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

Примечание.

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

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

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

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

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

-MultiSubnetFailover Определяет, включено ли свойство MultiSubnetFailover. Если приложение подключается к группе доступности AlwaysOn в разных подсетях, параметр MultiSubnetFailover=true обеспечивает быстрое обнаружение и подключение к активному серверу (в настоящее время).
Область применения: SQL Server (начиная с SQL Server 2019 (15.x)).

-OledbStreamThresholdoledb_stream_threshold
Указывает минимальный размер (в байтах) данных больших двоичных объектов, ниже которого их привязка будет выполняться в виде потока. Для использования этого параметра необходимо указать значение -UseOledbStreaming. Значение может находиться в диапазоне от 400 до 1048576, значение по умолчанию — 16384.

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

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

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

-PollingIntervalинтервал_опроса_
Определяет частоту (в секундах) опроса базы данных распространителя о реплицируемых транзакциях. Значение по умолчанию — 5 секунд.

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

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

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

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

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

-SubscriberDatabasePathsubscriber_database_path
Путь к базе данных Jet (MDB-файл) при значении SubscriberType равном 2 (позволяет соединиться с базой данных Jet без указания имени источника данных ODBC (DSN)).

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

-SubscriberPasswordsubscriber_password
Пароль подписчика. Если подписчикSecurityMode имеет значение 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. Этот параметр поддерживается только в том случае, если издатель и распространитель работают в SQL Server 2005 (9.x) или более поздних версиях. Этот параметр не поддерживается или должен иметь значение 0 для подписчиков, отличных от SQL Server, или одноранговых подписок. Этот параметр игнорируется при применении моментального снимка на подписчике агент распространения.

Примечание.

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

Важно!

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

Примечание.

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

-SubscriptionTableNamesubscription_table
Имя таблицы подписки, созданной или используемой в заданном подписчике. Если не указано, используется таблица MS репликаtion_subscriptions (Transact-SQL). Этот параметр следует использовать СУБД, не поддерживающих длинные имена файлов.

-SubscriptionType [ 0| 1| 2]
Определяет тип подписки для распространения. Значение 0 указывает на подписку по запросу, значение 1 — на принудительную подписку, а значение 2 — на анонимную подписку.

-TransactionsPerHistory [ 0| 1|... 10 000]
Указывает интервал транзакций для регистрации журналов. Сообщение записывается в журнал, как только число зафиксированных транзакций после последней записи в журнал превысило значение этого параметра. Значение по умолчанию равно 100. 0 означает бесконечное значение TransactionsPerHistory. See the preceding –MessageIntervalparameter.

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

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

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

Примечание.

Начиная с SQL 2017 CU22 и более поздних версий (включая SQL 2019 RTM), UseOledbStreaming записывает данные в папку c:\Users\DistributionAgentAccount>\<AppData\Temp.

До SQL 2017 CU22 UseOledbStreaming записывает данные в папку C:\Program Files\Microsoft SQL Server\<version>\COM .

Замечания

Важно!

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

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

Журнал изменений

Обновленное содержимое
Добавлен параметр -ExtendedEventConfigFile .
Добавлен параметр -MultiSubnetFailover.

См. также

Администрирование агента репликации