Validar datos replicados
Se aplica a: SQL Server Base de datos de Azure SQL
En este tema se describe cómo validar datos en SQL Server mediante SQL Server Management Studio, Transact-SQL o Replication Management Objects (RMO).
La replicación transaccional y la replicación de mezcla le permiten validar que los datos del suscriptor coinciden con los del publicador. Es posible realizar la validación de determinadas suscripciones o de todas las suscripciones a una publicación. Especifique uno de los siguientes tipos de validación y el Agente de distribución o el Agente de mezcla validarán los datos la próxima vez que se ejecuten:
- Solo recuento de filas. Esta opción valida si la tabla del suscriptor tiene las mismas filas que la tabla del publicador pero no valida la coincidencia del contenido de las filas. La validación del recuento de filas proporciona una idea sobre validación que puede ponerle al corriente de problemas con los datos.
- Recuento de filas y suma de comprobación binaria. Además de llevar a cabo un recuento de filas en el publicador y en el suscriptor, se calcula una suma de comprobación de todos los datos utilizando el algoritmo de suma de comprobación. Si el número de filas da un error, no se lleva a cabo la suma de comprobación.
Además de validar que los datos en el suscriptor y en el publicador coincidan, la replicación de mezcla ofrece la posibilidad de validar que los datos presenten las particiones correctas para cada suscriptor. Para más información, vea VValidar la información de particiones para un suscriptor de mezcla.
Nota:
Azure SQL Managed Instance puede ser un publicador, un distribuidor y un suscriptor para la replicación transaccional y de instantáneas. Las bases de datos de Azure SQL Database solo pueden ser suscriptores de extracción para la replicación transaccional y de instantáneas. Para obtener más información, vea Replicación transaccional con Azure SQL Database y Azure SQL Managed Instance.
Cómo funciona la validación de datos
SQL Server valida los datos calculando un recuento de filas o una suma de comprobación en el Publicador y, a continuación, compara estos valores con el recuento de filas o suma de comprobación calculado en el suscriptor. Se calcula un valor para toda la tabla de publicación y otro valor para toda la tabla de suscripción, pero en los cálculos no se incluyen los datos de las columnas text, ntextni image .
Mientras se realizan los cálculos, se colocan bloqueos compartidos temporalmente en las tablas en las que se ejecutan los recuentos de filas y sumas de comprobación, pero los cálculos se completan rápidamente y los bloqueos compartidos se quitan normalmente en unos segundos.
Cuando se utilizan sumas de comprobación binarias, se produce una comprobación de redundancia cíclica (CRC) de 32 bits columna por columna en vez de una comprobación CRC en la fila física de la página de datos. Esto permite que las columnas de la tabla estén en cualquier orden físicamente en la página de datos, pero se calcula la misma comprobación CRC para la fila. Es posible utilizar la validación de suma de comprobación binaria cuando hay filtros de fila o de columna en la publicación.
La validación de datos es un proceso de tres partes:
Una sola suscripción o todas las suscripciones en una publicación se marcan para validación. Marque las suscripciones para la validación en los cuadros de diálogo Validar suscripción, Validar suscripciones y Validar todas las suscripciones, que están disponibles en la carpeta Publicaciones locales y en la carpeta Suscripciones locales en Microsoft SQL Server Management Studio. También puede marcar suscripciones desde la pestaña Todas las suscripciones , la pestaña Lista de supervisión de suscripciones y el nodo de publicaciones del Monitor de replicación. Para información sobre cómo iniciar el Monitor de replicación, vea Iniciar el Monitor de replicación.
Una suscripción se valida la próxima vez que la sincroniza el Agente de distribución (en la replicación transaccional) o el Agente de mezcla (en la replicación de mezcla). El Agente de distribución normalmente se ejecuta de forma continua, en cuyo caso la validación se produce inmediatamente; el Agente de mezcla normalmente se ejecuta a petición, en cuyo caso la validación se produce después de ejecutar el agente.
Vea los resultados de la validación:
- En la ventana de detalles del Monitor de replicación: en la pestaña Historial de Distribuidor a suscriptor para la replicación transaccional y en la pestaña Historial de sincronizaciones en la replicación de mezcla.
- En el cuadro de diálogo Ver estado de sincronización en Management Studio.
Consideraciones y restricciones
Tenga en cuenta las siguientes cuestiones a la hora de validar los datos:
- Debe detener todas las actividades de actualización en los suscriptores antes de validar los datos (no es necesario detener todas las actividades en el publicador durante la validación).
- Dado que las sumas de comprobación y las sumas de comprobación binarias requieren grandes cantidades de recursos del procesador para validar un conjunto de datos de gran tamaño, debe programar la validación para que se produzca cuando la actividad sea mínima en los servidores que se utilizan en la replicación.
- La replicación solo valida tablas; no valida si los artículos solo de esquema (como los procedimientos almacenados) son iguales en el publicador y en el suscriptor.
- La suma de comprobación binaria se puede utilizar en cualquier tabla publicada. La suma de comprobación no puede validar tablas con filtros de columna ni estructuras de tabla lógicas donde los desplazamientos de columnas son distintos (debido a las instrucciones ALTER TABLE que quitan o agregan columnas).
- La validación de replicación usa las funciones checksum y binary_checksum . Para obtener información sobre este comportamiento, consulte CHECKSUM (Transact-SQL) y BINARY_CHECKSUM (Transact-SQL).
- La validación mediante suma de comprobación binaria o suma de comprobación puede informar incorrectamente sobre un error si los tipos de datos son diferentes en el suscriptor y en el publicador. Esto se puede producir si lleva a cabo una de las siguientes acciones:
- Establecer de forma explícita opciones del esquema para asignar tipos de datos de versiones anteriores de SQL Server.
- Establecer el nivel de compatibilidad de la publicación de una publicación de combinación en una versión anterior de SQL Server, cuando las tablas publicadas contienen uno o más tipos de datos que se deben asignados a esta versión.
- Inicializar de forma manual una suscripción, si usa diferentes tipos de datos en el suscriptor.
- Las validaciones de suma de comprobación binaria y de suma de comprobación no son compatibles con suscripciones transformables en la replicación transaccional.
- La validación no se admite para los datos replicados en suscriptores que no son de SQL Server.
- Los procedimientos para el Monitor de replicación solamente son para suscripciones de inserción porque las suscripciones de extracción no se pueden sincronizar en el Monitor de replicación. No obstante, en el Monitor de replicación puede marcar una suscripción para su validación y ver los resultados de la validación para las suscripciones de extracción.
- Los resultados de la validación indican si la validación se ha realizado correctamente o si ha tenido errores, pero no se especifica en qué filas se produjo el error de validación si se ha producido. Para comparar datos en el publicador y el suscriptor, use la tablediff Utility. Para más información sobre el uso de esta utilidad con datos replicados, consulte Compare Replicated Tables for Differences (Programación de la replicación).
Resultados de la validación de datos
Cuando la validación se ha completado, el Agente de distribución o el Agente de mezcla registran mensajes sobre si ha sido correcta o se han producido errores (la replicación no informa sobre las filas que han dado error). Estos mensajes se pueden ver en SQL Server Management Studio, en el Monitor de replicación y en las tablas del sistema de replicación. En el tema de procedimientos indicado anteriormente se explica cómo ejecutar la validación y ver los resultados.
Para controlar errores de validación, tenga en cuenta lo siguiente:
Configure la alerta de replicación Replicación: el suscriptor no ha superado la validación de datos para recibir una notificación del error. Para más información, vea Configurar alertas de replicación predefinidas (SQL Server Management Studio).
¿Son los errores de validación un problema para su aplicación? Si los errores de validación suponen un problema, actualice manualmente los datos para que se sincronicen o reinicialice la suscripción:
Los datos se pueden actualizar con la utilidad tablediff. Para más información sobre el uso de esta utilidad, consulte Comparar tablas replicadas para buscar diferencias (Programación de la replicación).
Para más información sobre la reinicialización, vea Reinitialize Subscriptions (Reinicializar suscripciones).
Artículos en la replicación transaccional
Uso de SQL Server Management Studio
- Conéctese al publicador en SQL Server Management Studio y, a continuación, expanda el nodo de servidor.
- Expanda la carpeta Replicación y, a continuación, expanda la carpeta Publicaciones locales .
- Haga clic con el botón secundario en la publicación en la que desea validar las suscripciones y, a continuación, haga clic en Validar suscripciones.
- En el cuadro de diálogo Validar suscripciones, seleccione las suscripciones que desea validar:
- Seleccione Validar todas las suscripciones de SQL Server.
- Seleccione Validar las siguientes suscripciones:y, a continuación, seleccione una o varias suscripciones.
- Para especificar el tipo de validación que se va a realizar (recuento de filas o recuento de filas y suma de comprobación), haga clic en Opciones de validacióny, a continuación, especifique las opciones en el cuadro de diálogo Opciones de validación de suscripciones .
- Seleccione Aceptar.
- Vea los resultados de la validación en el Monitor de replicación o en el cuadro de diálogo Ver estado de sincronización . Para cada suscripción:
- Expanda la publicación, haga clic con el botón secundario en la suscripción y, a continuación, haga clic en Ver estado de sincronización.
- Si el agente no se está ejecutando, haga clic en Iniciar en el cuadro de diálogo Ver estado de sincronización . En el cuadro de diálogo se mostrarán mensajes informativos relacionados con la validación.
Si no ve ningún mensaje relacionado con la validación, el agente ya ha registrado un mensaje posterior. En este caso, vea los resultados de la validación en el Monitor de replicación. Para obtener más información, vea los procedimientos del Monitor de replicación en este tema.
Usar Transact-SQL
Todos los artículos
En el publicador de la base de datos de publicaciones, ejecute sp_publication_validation (Transact-SQL). Especifique
@publication
y uno de los valores siguientes para@rowcount_only
:- 1 : solo comprobación del recuento de filas (el valor predeterminado)
- 2 : recuento de filas y suma de comprobación binaria.
Nota:
Cuando se ejecuta sp_publication_validation (Transact-SQL), se ejecuta sp_article_validation (Transact-SQL) para todos los artículos de la publicación. Para ejecutar correctamente sp_publication_validation (Transact-SQL), debe tener los permisos establecidos en SELECT en todas las columnas de las tablas base publicadas.
(Opcional) Iniciar el Agente de distribución de cada suscripción si aún no se está ejecutando. Para obtener más información, consulte Synchronize a Pull Subscription y Synchronize a Push Subscription.
Compruebe el resultado de la validación en la salida del agente.
Artículo único
En la base de datos de publicación del publicador, ejecute sp_article_validation (Transact-SQL). Especifique
@publication
, el nombre del artículo para@article
y uno de los valores siguientes para@rowcount_only
:- 1 : solo comprobación del recuento de filas (el valor predeterminado)
- 2 : recuento de filas y suma de comprobación binaria.
Nota:
Para ejecutar correctamente sp_article_validation (Transact-SQL), debe tener los permisos establecidos en SELECT en todas las columnas de la tabla base publicada.
(Opcional) Iniciar el Agente de distribución de cada suscripción si aún no se está ejecutando. Para obtener más información, consulte Synchronize a Pull Subscription y Synchronize a Push Subscription.
Compruebe el resultado de la validación en la salida del agente.
Suscriptor único
En el publicador de la base de datos de publicación, abra una transacción explícita mediante BEGIN TRANSACTION (Transact-SQL).
En la base de datos de publicación del publicador, ejecute sp_marksubscriptionvalidation (Transact-SQL). Especifique la publicación para
@publication
, el nombre del suscriptor para@subscriber
y el nombre de la base de datos de suscripciones para@destination_db
.(Opcional) Repita el paso 2 para cada suscripción que se está validando.
En la base de datos de publicación del publicador, ejecute sp_article_validation (Transact-SQL). Especifique
@publication
, el nombre del artículo para@article
y uno de los valores siguientes para@rowcount_only
:- 1 : solo comprobación del recuento de filas (el valor predeterminado)
- 2 : recuento de filas y suma de comprobación binaria.
Nota:
Para ejecutar correctamente sp_article_validation (Transact-SQL), debe tener los permisos establecidos en SELECT en todas las columnas de la tabla base publicada.
En la base de datos de publicación del publicador, confirme la transacción mediante COMMIT TRANSACTION (Transact-SQL).
(Opcional) Repita los pasos 1 a 5 para cada artículo que se está validando.
(Opcional) Inicie el Agente de distribución si aún no se está ejecutando. Para obtener más información, consulte Synchronize a Pull Subscription y Synchronize a Push Subscription.
Compruebe el resultado de la validación en la salida del agente. Para más información, consulte Validate Data at the Subscriber.
Todas las suscripciones de inserción para una publicación transaccional
Uso del Monitor de replicación
En el Monitor de replicación, expanda un grupo de publicador en el panel izquierdo y, a continuación, expanda un publicador.
Haga clic con el botón secundario en la publicación en la que desea validar las suscripciones y, a continuación, haga clic en Validar suscripciones.
En el cuadro de diálogo Validar suscripciones , seleccione las suscripciones que desea validar:
- Seleccione Validar todas las suscripciones de SQL Server.
- Seleccione Validar las siguientes suscripciones:y, a continuación, seleccione una o varias suscripciones.
Para especificar el tipo de validación que se va a realizar (recuento de filas o recuento de filas y suma de comprobación), haga clic en Opciones de validacióny, a continuación, especifique las opciones en el cuadro de diálogo Opciones de validación de suscripciones .
Seleccione Aceptar.
Haga clic en la pestaña Todas las suscripciones .
Vea los resultados de la validación. Para cada suscripción de inserción:
- Si no se está ejecutando el agente, haga clic con el botón secundario en la suscripción y, a continuación, haga clic en Iniciar sincronización.
- Haga clic con el botón secundario en la suscripción y, a continuación, haga clic en Ver detalles.
- Vea información en la pestaña Historial de Distribuidor a suscriptor en el área de texto Acciones en la sesión seleccionada .
Para una única suscripción a una publicación de mezcla
Uso de SQL Server Management Studio
Conéctese al publicador en SQL Server Management Studio y, a continuación, expanda el nodo de servidor.
Expanda la carpeta Replicación y, a continuación, expanda la carpeta Publicaciones locales .
Expanda la publicación en la que desea validar las suscripciones, haga clic con el botón secundario en la suscripción y, a continuación, haga clic en Validar suscripción.
En el cuadro de diálogo Validar suscripción , seleccione Validar esta suscripción.
Para especificar el tipo de validación que se va a realizar (recuento de filas o recuento de filas y suma de comprobación), haga clic en Opcionesy, a continuación, especifique las opciones en el cuadro de diálogo Opciones de validación de suscripciones .
Seleccione Aceptar.
Vea los resultados de la validación en el Monitor de replicación o en el cuadro de diálogo Ver estado de sincronización :
- Expanda la publicación, haga clic con el botón secundario en la suscripción y, a continuación, haga clic en Ver estado de sincronización.
- Si el agente no se está ejecutando, haga clic en Iniciar en el cuadro de diálogo Ver estado de sincronización . En el cuadro de diálogo se mostrarán mensajes informativos relacionados con la validación.
Si no ve ningún mensaje relacionado con la validación, el agente ya ha registrado un mensaje posterior. En este caso, vea los resultados de la validación en el Monitor de replicación. Para obtener más información, vea los procedimientos del Monitor de replicación en este tema.
Para todas las suscripciones a una publicación de mezcla
Uso de SQL Server Management Studio
Conéctese al publicador en SQL Server Management Studio y, a continuación, expanda el nodo de servidor.
Expanda la carpeta Replicación y, a continuación, expanda la carpeta Publicaciones locales .
Haga clic con el botón secundario en la publicación en la que desea validar las suscripciones y, a continuación, haga clic en Validar todas las suscripciones.
En el cuadro de diálogo Validar todas las suscripciones , especifique el tipo de validación que se va a realizar (recuento de filas o recuento de filas y suma de comprobación).
Seleccione Aceptar.
Vea los resultados de la validación en el Monitor de replicación o en el cuadro de diálogo Ver estado de sincronización . Para cada suscripción:
- Expanda la publicación, haga clic con el botón secundario en la suscripción y, a continuación, haga clic en Ver estado de sincronización.
- Si el agente no se está ejecutando, haga clic en Iniciar en el cuadro de diálogo Ver estado de sincronización . En el cuadro de diálogo se mostrarán mensajes informativos relacionados con la validación.
Si no ve ningún mensaje relacionado con la validación, el agente ya ha registrado un mensaje posterior. En este caso, vea los resultados de la validación en el Monitor de replicación. Para obtener más información, vea los procedimientos del Monitor de replicación en este tema.
Para una única suscripción de inserción a una publicación de mezcla
Uso del Monitor de replicación
- En el Monitor de replicación, expanda un grupo de publicador en el panel izquierdo, expanda un publicador y, a continuación, haga clic en una publicación.
- Haga clic en la pestaña Todas las suscripciones .
- Haga clic con el botón secundario en la suscripción que desea validar y, a continuación, haga clic en Validar suscripción.
- En el cuadro de diálogo Validar suscripción , seleccione Validar esta suscripción.
- Para especificar el tipo de validación que se va a realizar (recuento de filas o recuento de filas y suma de comprobación), haga clic en Opcionesy, a continuación, especifique las opciones en el cuadro de diálogo Opciones de validación de suscripciones .
- Seleccione Aceptar.
- Haga clic en la pestaña Todas las suscripciones .
- Vea los resultados de la validación:
- Si no se está ejecutando el agente, haga clic con el botón secundario en la suscripción y, a continuación, haga clic en Iniciar sincronización.
- Haga clic con el botón secundario en la suscripción y, a continuación, haga clic en Ver detalles.
- Vea información en la pestaña Historial de sincronizaciones en el área de texto Último mensaje de la sesión seleccionada: .
Usar Transact-SQL
En el publicador de la base de datos de publicaciones, ejecute sp_validatemergesubscription (Transact-SQL). Especifique
@publication
, el nombre del suscriptor para@subscriber
, el nombre de la base de datos de suscripciones para@subscriber_db
y uno de los valores siguientes para@level
:- 1 : validación solo del recuento de filas.
- 3 : validación de la suma de comprobación binaria del recuento de filas.
Esto marca la suscripción seleccionada para validación.
Inicie el Agente de mezcla para cada suscripción. Para obtener más información, consulte Synchronize a Pull Subscription y Synchronize a Push Subscription.
Compruebe el resultado de la validación en la salida del agente.
Repita los pasos 1 a 3 para cada suscripción que se está validando.
Nota:
Una suscripción a una publicación de combinación también se puede validar al final de una sincronización especificando el parámetro -Validate al ejecutar Replication Merge Agent.
Para todas las suscripciones de inserción a una publicación de mezcla
Uso del Monitor de replicación
- En el Monitor de replicación, expanda un grupo de publicador en el panel izquierdo y, a continuación, expanda un publicador.
- Haga clic con el botón secundario en la publicación en la que desea validar las suscripciones y, a continuación, haga clic en Validar todas las suscripciones.
- En el cuadro de diálogo Validar todas las suscripciones , especifique el tipo de validación que se va a realizar (recuento de filas o recuento de filas y suma de comprobación).
- Seleccione Aceptar.
- Haga clic en la pestaña Todas las suscripciones .
- Vea los resultados de la validación. Para cada suscripción de inserción:
- Si no se está ejecutando el agente, haga clic con el botón secundario en la suscripción y, a continuación, haga clic en Iniciar sincronización.
- Haga clic con el botón secundario en la suscripción y, a continuación, haga clic en Ver detalles.
- Vea información en la pestaña Historial de sincronizaciones en el área de texto Último mensaje de la sesión seleccionada: .
Usar Transact-SQL
En el publicador de la base de datos de publicaciones, ejecute sp_validatemergepublication (Transact-SQL). Especifique
@publication
y uno de los valores siguientes para@level
:- 1 : validación solo del recuento de filas.
- 3 : validación de la suma de comprobación binaria del recuento de filas.
Esto marca todas las suscripciones para validación.
Inicie el Agente de mezcla para cada suscripción. Para obtener más información, consulte Synchronize a Pull Subscription y Synchronize a Push Subscription.
Compruebe el resultado de la validación en la salida del agente. Para más información, consulte Validate Data at the Subscriber.
Validación de datos mediante parámetros del Agente de mezcla
Inicie el Agente de mezcla en el suscriptor (suscripción de extracción) o en el distribuidor (suscripción de inserción) del símbolo del sistema de una de las siguientes maneras.
- Especificando un valor de 1 (número de filas) o 3 (número de filas y suma de comprobación binaria) para el parámetro -Validate .
- Especificando la validación del recuento de filas o la validación del recuento de filas y de la suma de comprobación para el parámetro - ProfileName .
Para obtener más información, consulte Synchronize a Pull Subscription o Synchronize a Push Subscription.
Usar Replication Management Objects (RMO)
La replicación permite usar Replication Management Objects (RMO) para validar mediante programación si los datos del suscriptor coinciden con los datos del publicador. Los objetos que se usan dependen del tipo de topología de replicación. La replicación transaccional requiere la validación de todas las suscripciones a una publicación.
Nota:
Para obtener un ejemplo, vea Ejemplo (RMO)más adelante en esta sección.
Para validar los datos de todos los artículos de una publicación transaccional
Cree una conexión al publicador mediante la clase ServerConnection .
Cree una instancia de la clase TransPublication. Establezca las propiedades Name y DatabaseName de la publicación. Establezca la propiedad ConnectionContext en la conexión creada en el paso 1.
Llame al método LoadProperties para obtener las propiedades restantes del objeto. Si este método devuelve false, significa que las propiedades de publicación del paso 2 se definieron incorrectamente, o bien que la publicación no existe.
Llame al método ValidatePublication. Pase lo siguiente:
Un valor booleano que indique si se debe detener el Agente de distribución una vez completada la validación.
De esta forma se marcan los artículos para la validación.
Si no se está ejecutando, inicie el Agente de distribución para sincronizar cada suscripción. Para obtener más información, consulte Synchronize a Push Subscription o Synchronize a Pull Subscription. El resultado de la operación de la validación se escribe en el historial del agente. Para más información, consulte Monitoring Replication.
Para validar los datos de todas las suscripciones a una publicación de combinación
Cree una conexión al publicador mediante la clase ServerConnection .
Cree una instancia de la clase MergePublication. Establezca las propiedades Name y DatabaseName de la publicación. Establezca la propiedad ConnectionContext en la conexión creada en el paso 1.
Llame al método LoadProperties para obtener las propiedades restantes del objeto. Si este método devuelve false, significa que las propiedades de publicación del paso 2 se definieron incorrectamente, o bien que la publicación no existe.
Llame al método ValidatePublication. Pase el valor de ValidationOptionque desee.
Ejecute el Agente de mezcla en cada suscripción para iniciar la validación o espere hasta la siguiente ejecución programada del agente. Para obtener más información, consulte Synchronize a Pull Subscription y Synchronize a Push Subscription. El resultado de la operación de la validación se escribe en el historial del agente, que se puede consultar con el Monitor de replicación. Para más información, consulte Monitoring Replication.
Para validar los datos de una única suscripción a una publicación de combinación
Cree una conexión al publicador mediante la clase ServerConnection .
Cree una instancia de la clase MergePublication. Establezca las propiedades Name y DatabaseName de la publicación. Establezca la propiedad ConnectionContext en la conexión creada en el paso 1.
Llame al método LoadProperties para obtener las propiedades restantes del objeto. Si este método devuelve false, significa que las propiedades de publicación del paso 2 se definieron incorrectamente, o bien que la publicación no existe.
Llame al método ValidateSubscription. Pase el nombre del suscriptor y la base de datos de suscripciones que se validan y el valor de ValidationOptiondeseado.
Ejecute el Agente de mezcla en la suscripción para iniciar la validación o espere hasta la siguiente ejecución programada del agente. Para obtener más información, consulte Synchronize a Pull Subscription y Synchronize a Push Subscription. El resultado de la operación de la validación se escribe en el historial del agente, que se puede consultar con el Monitor de replicación. Para más información, consulte Monitoring Replication.
Ejemplo (RMO)
Este ejemplo marca todas las suscripciones a una publicación transaccional para la validación del recuento de filas.
// Define the server, database, and publication names
string publisherName = publisherInstance;
string publicationName = "AdvWorksProductTran";
string publicationDbName = "AdventureWorks2022";
TransPublication publication;
// Create a connection to the Publisher.
ServerConnection conn = new ServerConnection(publisherName);
try
{
// Connect to the Publisher.
conn.Connect();
// Set the required properties for the publication.
publication = new TransPublication();
publication.ConnectionContext = conn;
publication.Name = publicationName;
publication.DatabaseName = publicationDbName;
// If we can't get the properties for this publication,
// throw an application exception.
if (publication.LoadProperties())
{
// Initiate validataion for all subscriptions to this publication.
publication.ValidatePublication(ValidationOption.RowCountOnly,
ValidationMethod.ConditionalFast, false);
// If not already running, start the Distribution Agent at each
// Subscriber to synchronize and validate the subscriptions.
}
else
{
throw new ApplicationException(String.Format(
"Settings could not be retrieved for the publication. " +
"Ensure that the publication {0} exists on {1}.",
publicationName, publisherName));
}
}
catch (Exception ex)
{
// Do error handling here.
throw new ApplicationException(
"Subscription validation could not be initiated.", ex);
}
finally
{
conn.Disconnect();
}
' Define the server, database, and publication names
Dim publisherName As String = publisherInstance
Dim publicationName As String = "AdvWorksProductTran"
Dim publicationDbName As String = "AdventureWorks2022"
Dim publication As TransPublication
' Create a connection to the Publisher.
Dim conn As ServerConnection = New ServerConnection(publisherName)
Try
' Connect to the Publisher.
conn.Connect()
' Set the required properties for the publication.
publication = New TransPublication()
publication.ConnectionContext = conn
publication.Name = publicationName
publication.DatabaseName = publicationDbName
' If we can't get the properties for this publication,
' throw an application exception.
If publication.LoadProperties() Then
' Initiate validataion for all subscriptions to this publication.
publication.ValidatePublication(ValidationOption.RowCountOnly, _
ValidationMethod.ConditionalFast, False)
' If not already running, start the Distribution Agent at each
' Subscriber to synchronize and validate the subscriptions.
Else
Throw New ApplicationException(String.Format( _
"Settings could not be retrieved for the publication. " + _
"Ensure that the publication {0} exists on {1}.", _
publicationName, publisherName))
End If
Catch ex As Exception
' Do error handling here.
Throw New ApplicationException( _
"Subscription validation could not be initiated.", ex)
Finally
conn.Disconnect()
End Try
Este ejemplo marca una suscripción específica a una publicación de combinación para la validación del recuento de filas.
// Define the server, database, and publication names
string publisherName = publisherInstance;
string publicationName = "AdvWorksSalesOrdersMerge";
string publicationDbName = "AdventureWorks2022";
string subscriberName = subscriberInstance;
string subscriptionDbName = "AdventureWorks2022Replica";
MergePublication publication;
// Create a connection to the Publisher.
ServerConnection conn = new ServerConnection(publisherName);
try
{
// Connect to the Publisher.
conn.Connect();
// Set the required properties for the publication.
publication = new MergePublication();
publication.ConnectionContext = conn;
publication.Name = publicationName;
publication.DatabaseName = publicationDbName;
// If we can't get the properties for this merge publication, then throw an application exception.
if (publication.LoadProperties())
{
// Initiate validation of the specified subscription.
publication.ValidateSubscription(subscriberName,
subscriptionDbName, ValidationOption.RowCountOnly);
// Start the Merge Agent to synchronize and validate the subscription.
}
else
{
throw new ApplicationException(String.Format(
"Settings could not be retrieved for the publication. " +
"Ensure that the publication {0} exists on {1}.",
publicationName, publisherName));
}
}
catch (Exception ex)
{
// Do error handling here.
throw new ApplicationException(String.Format(
"The subscription at {0} to the {1} publication could not " +
"be validated.", subscriberName, publicationName), ex);
}
finally
{
conn.Disconnect();
}
' Define the server, database, and publication names
Dim publisherName As String = publisherInstance
Dim publicationName As String = "AdvWorksSalesOrdersMerge"
Dim publicationDbName As String = "AdventureWorks2022"
Dim subscriberName As String = subscriberInstance
Dim subscriptionDbName As String = "AdventureWorks2022Replica"
Dim publication As MergePublication
' Create a connection to the Publisher.
Dim conn As ServerConnection = New ServerConnection(publisherName)
Try
' Connect to the Publisher.
conn.Connect()
' Set the required properties for the publication.
publication = New MergePublication()
publication.ConnectionContext = conn
publication.Name = publicationName
publication.DatabaseName = publicationDbName
' If we can't get the properties for this merge publication, then throw an application exception.
If publication.LoadProperties() Then
' Initiate validation of the specified subscription.
publication.ValidateSubscription(subscriberName, _
subscriptionDbName, ValidationOption.RowCountOnly)
' Start the Merge Agent to synchronize and validate the subscription.
Else
Throw New ApplicationException(String.Format( _
"Settings could not be retrieved for the publication. " + _
"Ensure that the publication {0} exists on {1}.", _
publicationName, publisherName))
End If
Catch ex As Exception
' Do error handling here.
Throw New ApplicationException(String.Format( _
"The subscription at {0} to the {1} publication could not " + _
"be validated.", subscriberName, publicationName), ex)
Finally
conn.Disconnect()
End Try