Replication Distribution Agent
Se aplica a: SQL Server Azure SQL Database
El Agente de distribución de replicación es un ejecutable que mueve la instantánea (para la replicación de instantáneas y la replicación transaccional) y las transacciones de las tablas de base de datos de la distribución (para la replicación transaccional) a las tablas de destino en los suscriptores.
Nota:
Los parámetros se pueden especificar en cualquier orden. Cuando no se especifican parámetros opcionales, se usan valores de la configuración del Registro predefinida en el equipo local.
Sintaxis
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 ]
Argumentos
-?
Imprime todos los parámetros disponibles.
-Publisher server_name [ \instance_name ]
El nombre del publicador. Especifique <server_name>
para la instancia predeterminada de Microsoft SQL Server en ese servidor. Especifique <server_name>\<instance_name>
para una instancia con nombre de SQL Server en ese servidor. Si la base de datos del publicador está en un grupo de disponibilidad (AG), sigue reflejando el nombre del servidor del publicador principal original debido a sp_redirect_publisher. No refleja el nombre del agente de escucha del grupo de disponibilidad.
-PublisherDB publisher_database
Nombre de la base de datos del publicador.
-Subscriber server_name [ \instance_name ]
Nombre del suscriptor. Especifique <server_name>
para la instancia predeterminada de SQL Server en ese servidor. Especifique <server_name>\<instance_name>
para una instancia con nombre de SQL Server en ese servidor. Si la base de datos del suscriptor está en un grupo de disponibilidad, debe reflejar el nombre del agente de escucha del grupo de disponibilidad.
-SubscriberDB subscriber_database
Nombre de la base de datos del suscriptor.
-AltSnapshotFolder alt_snapshot_folder_path
Ruta de acceso a la carpeta que contiene la instantánea inicial de una suscripción.
-BcpBatchSize bcp_batch_size
Número de filas que se van a enviar en una operación de copia masiva. Cuando se realiza una bcp in
operación, el tamaño del lote es el número de filas que se van a enviar al servidor como una transacción y también el número de filas que se deben enviar antes de que el Agente de distribución registre un mensaje de progreso bcp. Cuando se realiza una bcp out
operación, se usa un tamaño fijo de lote.1000
-CommitBatchSize commit_batch_size
Número de transacciones que se van a emitir al suscriptor antes de emitir una instrucción COMMIT. El valor predeterminado es 100 y el valor máximo es 10000. Este parámetro se omite cuando el Agente de distribución aplica la instantánea al suscriptor.
-CommitBatchThreshold commit_batch_threshold
Número de comandos de replicación que se van a emitir al suscriptor antes de emitir una instrucción COMMIT. El valor predeterminado es 1000 y el valor máximo es 10000. Este parámetro se omite cuando el Agente de distribución aplica la instantánea al suscriptor.
-Continuous
Especifica si el agente intenta sondear las transacciones replicadas continuamente. Si se especifica, el agente sondea las transacciones replicadas del origen en intervalos de sondeo, aunque no haya ninguna transacción pendiente.
-DefinitionFile def_path_and_file_name
Ruta de acceso del archivo de definición del agente. Un archivo de definición de agente contiene los argumentos de símbolo del sistema para el agente. El contenido del archivo se analiza como un archivo ejecutable. Utilice las comillas tipográficas (") para especificar valores de argumento que contienen caracteres arbitrarios.
-Distribuidor
Nombre del distribuidor. Para la distribución (inserción) del Distribuidor, el nombre tiene como valor predeterminado el nombre del Distribuidor local. Si la base de datos del distribuidor está en un grupo de disponibilidad, debe reflejar el nombre del agente de escucha del grupo de disponibilidad.
-DistributorLogin distributor_login
Nombre de inicio de sesión del distribuidor.
-DistributorPassword distributor_password
Contraseña del distribuidor.
-DistributorSecurityMode [ 0 | 1 ]
Especifica el modo de seguridad del distribuidor. Un valor de 0 hace referencia al modo de autenticación de SQL Server y un valor de 1 hace referencia al modo de autenticación de Windows (valor predeterminado).
-EncryptionLevel [ 0 | 1 | 2 ]
Nivel de seguridad de la capa de transporte (TLS), anteriormente conocido como Capa de sockets seguros (SSL), cifrado usado por el Agente de distribución al realizar conexiones.
Valor de EncryptionLevel | Descripción |
---|---|
0 |
Especifica que no se usa TLS. |
1 |
Especifica que se usa TLS, pero el agente no comprueba que el certificado de servidor TLS esté firmado por un emisor de confianza. |
2 |
Especifica que se usa TLS y que se ha comprobado el certificado. |
Un certificado TLS válido se define con un nombre de dominio completo de SQL Server. Para que el agente se conecte correctamente al establecer -EncryptionLevel
2
en , cree un alias en el servidor SQL Server local. El parámetro "Alias Name" debe ser el nombre del servidor, mientras que el parámetro "Server" se debe establecer en el nombre completo de la instancia de SQL Server.
Para más información, consulte View and Modify Replication Security Settings.
-ErrorFile error_path_and_file_name
Ruta de acceso y nombre de archivo del archivo de error generado por el Agente de distribución. Este archivo se genera en cualquier momento en el que se produjo un error al aplicar transacciones de replicación en el suscriptor; Los errores que se producen en el publicador o distribuidor no se registran en este archivo. Contiene las transacciones de replicación en las que se ha producido un error y los mensajes de error relacionados. Si no se especifica, el archivo de error se genera en el directorio actual del Agente de distribución. El nombre del archivo de error es el nombre del agente de distribución con la extensión .err. Si el nombre de archivo especificado existe, los mensajes de error se anexan al archivo. Este parámetro puede tener un máximo de 256 caracteres Unicode.
-ExtendedEventConfigFile configuration_path_and_file_name
Especifica el nombre y la ruta del archivo para el archivo de configuración XML de eventos extendidos. El archivo de configuración de eventos extendidos le permite configurar sesiones y habilitar eventos para su seguimiento.
-FileTransferType [ 0 | 1 ]
Especifica el tipo de transferencia de archivo. Un valor de 0
indica UNC (convención de nomenclatura universal) y un valor de indica FTP (protocolo de 1
transferencia de archivos).
-FtpAddress ftp_address
Dirección de red del servicio FTP para el distribuidor. Cuando no se especifica, DistributorAddress
se usa . Si no se especifica DistributorAddress
, se usa Distributor
.
-FtpPassword ftp_password
Contraseña de usuario usada para conectarse al servicio FTP.
-FtpPort ftp_port
Número de puerto del servicio FTP para el distribuidor. Cuando no se especifica, se utiliza el número de puerto predeterminado para el servicio FTP (21).
-FtpUserName ftp_user_name
Nombre de usuario que se utiliza para conectarse al servicio FTP. Cuando no se especifica, anonymous
se usa .
-HistoryVerboseLevel [ 0 | 1 | 2 | 3 ]
Especifica la cantidad de historial registrado durante una operación de la distribución. Para minimizar el efecto de rendimiento del registro del historial, seleccione 1
.
Valor HistoryVerboseLevel | Descripción |
---|---|
0 |
Los mensajes de progreso se escriben en la consola o bien en un archivo de resultados. Los registros del historial no se registran en la base de datos de distribución. |
1 (valor predeterminado) |
Siempre actualiza un mensaje del historial anterior del mismo estado (inicio, progreso, éxito, etc.). Si no existe ningún registro anterior con el mismo estado, inserta un nuevo registro. |
2 |
Inserta nuevos registros de historial a menos que el registro sea para mensajes de inactividad o mensajes de trabajos de ejecución prolongada, en cuyo caso actualiza los registros anteriores. |
3 |
Inserte siempre nuevos registros, a menos que sea para mensajes inactivos. |
-Hostname host_name
Nombre de host que se usa al conectarse al publicador. Este parámetro puede tener un máximo de 128 caracteres Unicode.
-KeepAliveMessageInterval keep_alive_message_interval_seconds
El número de segundos antes de que el subproceso del historial compruebe si alguna de las conexiones existentes está esperando una respuesta del servidor. Este valor se puede reducir para evitar que la comprobación del agente marque al agente de distribución como sospechoso al ejecutar un lote de ejecución prolongada. El valor predeterminado es 300
segundos.
-LoginTimeOut login_time_out_seconds
Número de segundos antes de que se agote el tiempo de espera del inicio de sesión. El valor predeterminado es 15
segundos.
-MaxBcpThreads number_of_threads
Especifica el número de operaciones de copia masiva que se pueden realizar en paralelo. El número máximo de subprocesos y conexiones ODBC que existen simultáneamente es el menor o el número de MaxBcpThreads
solicitudes de copia masiva que aparecen en la transacción de sincronización de la base de datos de distribución. MaxBcpThreads
debe tener un valor mayor que 0
y no tiene ningún límite superior codificado de forma rígida. El valor predeterminado es 2
el número de procesadores, hasta un valor máximo de 8
. Al aplicar una instantánea que se generó en el publicador mediante la opción de instantánea simultánea, se usa un subproceso, independientemente del número especificado para MaxBcpThreads
.
-MaxDeliveredTransactions number_of_transactions
Número máximo de transacciones de inserción o extracción aplicadas a los suscriptores en una sincronización. Un valor de 0
indica que el máximo es un número infinito de transacciones. Los suscriptores pueden utilizar otros valores para acortar la duración de una sincronización que se extrae de un publicador.
Si -MaxDeliveredTransactions
se especifican y -Continuous
, el Agente de distribución entrega el número especificado de transacciones y, a continuación, se detiene (aunque -Continuous
se especifique). Debe reiniciar el Agente de distribución cuando el trabajo se complete.
-MessageInterval message_interval
Intervalo de tiempo usado para el registro del historial. Un evento de historial se registra cuando se alcanza uno de estos parámetros:
El
TransactionsPerHistory
valor se alcanza después de registrar el último evento de historial.El
MessageInterval
valor se alcanza después de registrar el último evento de historial.
Si no hay ninguna transacción replicada disponible en el origen, el agente notifica un mensaje sin transacción al distribuidor. Esta opción especifica cuánto tiempo espera el agente para enviar otro mensaje que indica que no hay ninguna transacción. Los agentes siempre envían un mensaje que indica que no hay ninguna transacción cuando detectan que no hay ninguna transacción disponible en el origen después de procesar previamente las transacciones replicadas. El valor predeterminado es 60 segundos.
-MultiSubnetFailover
Se aplica a: SQL Server 2019 (15.x) y versiones posteriores.
Especifica si la propiedad MultiSubnetFailover está habilitada o no. Si la aplicación se conecta a un grupo de disponibilidad en subredes diferentes, establecer MultiSubnetFailover=true proporciona una detección más rápida de y la conexión con el servidor activo (actualmente).
-OledbStreamThreshold oledb_stream_threshold
Especifica el tamaño mínimo, en bytes, para los datos binarios de objetos grandes por encima del cual los datos se enlazan como una secuencia. Debe especificar -UseOledbStreaming
para usar este parámetro. Los valores pueden oscilar entre 400 bytes y 1048 576 bytes, con un valor predeterminado de 16 384 bytes.
-Output output_path_and_file_name
Ruta de acceso del archivo de salida del agente. Si no se proporciona el nombre de archivo, la salida se envía a la consola. Si el nombre de archivo especificado existe, el resultado se anexa al archivo.
-OutputVerboseLevel [ 0 | 1 | 2 ]
Especifica si el resultado debería ser detallado. Si el nivel detallado es 0
, solo se imprimen los mensajes de error. Si el nivel detallado es 1
, se imprimen todos los mensajes del informe de progreso. Si el nivel detallado es 2
(valor predeterminado), se imprimen todos los mensajes de error y los mensajes de informe de progreso, lo que resulta útil para la depuración.
-PacketSize packet_size
Tamaño del paquete, en bytes. El valor predeterminado es 4096 (bytes).
-PollingInterval polling_interval
Con qué frecuencia, en segundos, se consulta la base de datos de distribución para las transacciones replicadas. El valor predeterminado es 5 segundos.
-ProfileName profile_name
Especifica un perfil de agente para utilizar para los parámetros del agente. Si ProfileName
es NULL
, el perfil del agente está deshabilitado. Si ProfileName
no se especifica, se usa el perfil predeterminado para el tipo de agente. Para obtener información, vea Perfiles del Agente de replicación.
-Publicación de publicación
Nombre de la publicación. Este parámetro solamente es válido si la publicación se define para tener siempre una instantánea disponible para las suscripciones nuevas o reinicializadas.
-QueryTimeOut query_time_out_seconds
Número de segundos antes de que se agote el tiempo de espera de la consulta. El valor predeterminado es 1800 segundos.
-QuotedIdentifier quoted_identifier
Especifica el carácter del identificador entrecomillado que se utilizará. El primer carácter del valor indica el valor que utiliza el agente de distribución. Si QuotedIdentifier
se usa sin ningún valor, el Agente de distribución usa un espacio. Si QuotedIdentifier
no se usa, el Agente de distribución usa el identificador entre comillas que admite el suscriptor.
-SkipErrors native_error_id [ :... n ]
Lista separada por dos puntos que especifica los números de error que debe omitir este agente. Este parámetro se omite cuando el Agente de distribución aplica la instantánea en el suscriptor.
-SubscriberDatabasePath subscriber_database_path
La ruta de acceso a la base de datos Jet (.mdb archivo) si SubscriberType
es 2
(permite una conexión a una base de datos Jet sin un nombre de origen de datos ODBC (DSN)).
-SubscriberLogin subscriber_login
Nombre de inicio de sesión del suscriptor. Si SubscriberSecurityMode
es 0
(para la autenticación de SQL Server), se debe especificar este parámetro.
-SubscriberPassword subscriber_password
Contraseña del suscriptor. Si SubscriberSecurityMode
es 0
(para la autenticación de SQL Server), se debe especificar este parámetro.
-SubscriberSecurityMode [ 0 | 1 ]
Especifica el modo de seguridad del suscriptor. Un valor de indica autenticación de 0
SQL Server y un valor de indica el modo de autenticación de 1
Windows (valor predeterminado).
-SubscriberType [ 0 | 1 | 3 ]
Especifica el tipo de conexión de suscriptor utilizada por el agente de distribución.
Valor SubscriberType | Descripción |
---|---|
0 |
SQL Server |
1 |
Origen de datos ODBC |
3 |
Origen de datos OLE DB |
-SubscriptionStreams [ 0 | 1 | 2 | ... 64 ]
Número de conexiones permitidas por Agente de distribución para aplicar lotes de cambios en paralelo a un suscriptor, a la vez que se mantienen muchas de las características transaccionales presentes al usar un único subproceso. Para un publicador de SQL Server, se admite un intervalo de valores de 1 a 64.
Este parámetro no se admite o debe ser para suscriptores que no sean 0
de SQL Server o suscripciones punto a punto. Este parámetro se omite cuando el Agente de distribución aplica la instantánea en el suscriptor.
Si una de las conexiones no se puede ejecutar o confirmar, todas las conexiones anulan el lote actual y el agente usa una sola secuencia para reintentar los lotes con errores. Antes de que finalice esta fase de reintento, pueden aparecer incoherencias transaccionales temporales en el suscriptor. Una vez que se han confirmado correctamente los lotes con errores, el suscriptor vuelve al estado de coherencia transaccional.
Importante
Cuando se especifica un valor de 2
o mayor para -SubscriptionStreams
, el orden en el que se reciben las transacciones en el suscriptor puede diferir del orden en el que se realizaron en el publicador. Si este comportamiento provoca infracciones de restricciones durante la sincronización, debe usar la NOT FOR REPLICATION
opción para deshabilitar la aplicación de restricciones durante la sincronización. Para obtener más información, vea Control del comportamiento de desencadenadores y restricciones en sincronización.
Las secuencias de suscripción no funcionan para los artículos configurados para entregar Transact-SQL. Para usar flujos de suscripción, configure artículos para entregar llamadas a procedimientos almacenados en su lugar.
-SubscriptionTableName subscription_table
Nombre de la tabla de suscripciones generada o usada en el suscriptor especificado. Cuando no se especifica, se usa la tabla MSreplication_subscriptions . Use esta opción para los sistemas de administración de bases de datos (DBMS) que no admiten nombres de archivo largos.
-SubscriptionType [ 0 | 1 | 2 ]
Especifica el tipo de suscripción para la distribución. Un valor de 0
indica una suscripción de inserción, un valor de 1
indica una suscripción de extracción y un valor de 2
indica una suscripción anónima.
-TransactionsPerHistory [ 0 | 1 | ... 10000 ]
Especifica el intervalo de la transacción para el registro del historial. Si el número de transacciones confirmadas después de la última instancia de registro del historial es mayor que esta opción, se registra un mensaje de historial. El valor predeterminado es 100. Un valor de 0
indica infinito TransactionsPerHistory
. Consulte el parámetro anterior –MessageInterval
.
-UseDTS
Se debe especificar como un parámetro para una publicación que permite la transformación de datos.
-UseInprocLoader
Mejora el rendimiento de la instantánea inicial haciendo que el agente de distribución utilice el comando BULK INSERT al aplicar los archivos de instantánea al Suscriptor. Este parámetro está en desuso porque no es compatible con el tipo de datos XML. Si no replica datos XML, se puede usar este parámetro. Este parámetro no se puede usar con instantáneas en modo de caracteres o suscriptores que no sean de SQL Server. Si usa este parámetro, la cuenta de servicio de SQL Server en el suscriptor requiere permisos de lectura en el directorio donde se encuentran los archivos de datos de instantánea .bcp
. Cuando no se usa este parámetro, el agente (para suscriptores que no son de SQL Server) o el controlador ODBC cargado por el agente (para suscriptores de SQL Server) lee de los archivos, por lo que no se usa el contexto de seguridad de la cuenta de servicio de SQL Server.
-UseOledbStream
Cuando se especifica, habilita el enlace de datos del objeto binario como un flujo. Use -OledbStreamThreshold
para especificar el tamaño, en bytes, por encima del cual se usa una secuencia. UseOledbStreaming
se habilita de forma predeterminada.
En SQL Server 2017 (14.x) CU 22 y versiones posteriores, UseOledbStreaming
escribe en la C:\Users\<DistributionAgentAccount>\AppData\Temp
carpeta .
Antes de SQL Server 2017 (14.x) CU 22, UseOledbStreaming
escribe en la C:\Program Files\Microsoft SQL Server\<version>\COM
carpeta .
En SQL Server 2019 (15.x) CU 29, puede deshabilitar el streaming OLE DB actualizando -UseOledbStreaming
para 0
evitar el error mencionado en Mensaje de error al ejecutar el Agente de distribución en SQL Server.
Comentarios
Si instaló Agente SQL Server para ejecutarse en una cuenta de sistema local en lugar de en una cuenta de usuario de dominio (valor predeterminado), el servicio solo puede acceder al equipo local. Si el agente de distribución que se ejecuta en el agente de SQL Server se configura para utilizar el modo de autenticación de Windows cuando inicia sesión en una instancia de SQL Server, el agente de distribución devuelve un error. La configuración predeterminada es la autenticación de SQL Server. Para obtener información acerca del cambio de cuentas de seguridad, vea View and Modify Replication Security Settings.
Para iniciar el Agente de distribución, ejecute distrib.exe
desde el símbolo del sistema. Para obtener información, vea Conceptos de los ejecutables del Agente de replicación.