la replicación

39
Replicación de una Base de Datos (SQL Server) La replicación La replicación es un conjunto de tecnologías destinadas a la copia y distribución de datos y objetos de base de datos desde una base de datos a otra, para luego sincronizar ambas bases de datos y mantener su coherencia. La replicación permite distribuir datos entre diferentes ubicaciones y entre usuarios remotos o móviles mediante redes locales y de área extensa, conexiones de acceso telefónico, conexiones inalámbricas e Internet. La replicación transaccional se usa normalmente en escenarios servidor a servidor que requieren un alto rendimiento, como por ejemplo: La replicación de mezcla se ha diseñado principalmente para las aplicaciones móviles o de servidores distribuidos que pueden encontrarse con conflictos de datos. Los escenarios más frecuentes son: El intercambio de datos con usuarios móviles, las aplicaciones de punto de venta (POS) a consumidores, y la integración de datos de varios sitios. La replicación de datos se usa para proporcionar el conjunto de datos inicial para la replicación transaccional y de mezcla; también se puede usar cuando está indicada una actualización completa de los datos. Con estos tres tipos de replicación, SQL Server proporciona un sistema eficaz y flexible para la sincronización de datos en toda la organización. El Monitor de replicación incluye las siguientes mejoras en cuanto a facilidad de uso: En la mayoría de las cuadrículas del Monitor de replicación, ahora puede hacer lo siguiente: seleccionar las columnas que quiere ver, ordenar por varias columnas, y filtrar las filas de la cuadrícula basándose en los valores de las columnas. Ingeniería Informática y de Sistemas. Página 1

Upload: cristiam-david-zapata-martinez

Post on 06-Aug-2015

58 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: La replicación

Replicación de una Base de Datos (SQL Server)

La replicación

La replicación es un conjunto de tecnologías destinadas a la copia y distribución de datos y objetos de base de datos desde una base de datos a otra, para luego sincronizar ambas bases de datos y mantener su coherencia.

La replicación permite distribuir datos entre diferentes ubicaciones y entre usuarios remotos o móviles mediante redes locales y de área extensa, conexiones de acceso telefónico, conexiones inalámbricas e Internet.

La replicación transaccional se usa normalmente en escenarios servidor a servidor que requieren un alto rendimiento, como por ejemplo:

La replicación de mezcla se ha diseñado principalmente para las aplicaciones móviles o de servidores distribuidos que pueden encontrarse con conflictos de datos. Los escenarios más frecuentes son:

El intercambio de datos con usuarios móviles, las aplicaciones de punto de venta (POS) a consumidores, y la integración de datos de varios sitios. La replicación de datos se usa para proporcionar el conjunto de datos inicial para la replicación transaccional y de mezcla; también se puede usar cuando está indicada una actualización completa de los datos. Con estos tres tipos de replicación, SQL Server proporciona un sistema eficaz y flexible para la sincronización de datos en toda la organización.

El Monitor de replicación incluye las siguientes mejoras en cuanto a facilidad de uso:

En la mayoría de las cuadrículas del Monitor de replicación, ahora puede hacer lo siguiente:

seleccionar las columnas que quiere ver, ordenar por varias columnas, y filtrar las filas de la cuadrícula basándose en los valores de las columnas.

El nombre de la ficha Trabajos comunes del nodo de publicador se ha cambiado a Agentes. La ficha Agentes ahora proporciona una ubicación centralizada para ver información sobre todos los agentes y trabajos relacionados con las publicaciones del publicador seleccionado. Entre los agentes y los trabajos relacionados con las publicaciones se incluyen los siguientes:

El Agente de instantáneas, utilizado por todas las publicaciones. El Agente de registro del LOG, utilizado por todas las publicaciones

transaccionales. El Agente de lectura de cola, utilizado por publicaciones transaccionales

que admiten suscripciones de actualización en cola. Tareas de mantenimiento, utilizadas por todas las publicaciones.

El Agente de distribución y el Agente de mezcla están relacionados con las suscripciones a publicaciones. Para obtener más información, vea Cómo ver

Ingeniería Informática y de Sistemas. Página 1

Page 2: La replicación

Replicación de una Base de Datos (SQL Server)

información y realizar tareas para los agentes asociados a una suscripción (Monitor de replicación).

La ficha Advertencias y agentes del nodo de publicación se ha dividido en dos fichas independientes: Advertencias y Agentes. El hecho de dividir las fichas pone de relieve las diferencias entre administrar las advertencias de rendimiento y supervisar los agentes de replicación. La ficha Agentes se actualiza automáticamente, pero no ocurre lo mismo con la ficha Advertencias.

La replicación de instantáneas

De forma predeterminada, los tres tipos de replicación utilizan una instantánea para inicializar suscriptores. El Agente de instantáneas de SQL Server siempre genera los archivos de instantáneas, pero el agente que entrega los archivos varía según el tipo de replicación que se utilice. La replicación de instantáneas y la replicación transaccional utilizan el Agente de distribución para entregar los archivos, mientras que la replicación de mezcla utiliza el Agente de mezcla de SQL Server. El Agente de instantáneas se ejecuta en el distribuidor. El Agente de distribución y el Agente de mezcla se ejecutan en el distribuidor para las suscripciones de inserción o en los suscriptores para las suscripciones de extracción.

Las instantáneas se pueden generar y aplicar inmediatamente tras la creación de la suscripción o de acuerdo con una programación establecida en el momento de crear la publicación. El Agente de instantáneas prepara archivos de instantáneas que contienen el esquema y los datos de las tablas y objetos de base de datos publicados, almacena los archivos en la carpeta de instantáneas del publicador y registra la información de seguimiento en la base de datos de distribución del distribuidor. Al configurar un distribuidor se especifica la carpeta de instantáneas predeterminada, pero puede especificar una ubicación alternativa para una publicación en lugar de, o además de, la predeterminada.

Agente de instantáneas

Ingeniería Informática y de Sistemas. Página 2

Page 3: La replicación

Replicación de una Base de Datos (SQL Server)

En la replicación de mezcla se genera una instantánea cada vez que se ejecuta el Agente de instantáneas. En la replicación transaccional, la generación de instantáneas depende de la configuración de la propiedad immediate_sync de la publicación. Si la propiedad está establecida en TRUE (el valor predeterminado con el Asistente para nueva publicación), se genera una instantánea cada vez que se ejecuta el Agente de instantáneas. Ésta se puede aplicar al suscriptor en cualquier momento. Si está establecida en FALSE (el valor predeterminado con sp_addpublication), la instantánea sólo se genera si se ha agregado una nueva suscripción desde la última vez que se ejecutó el Agente de instantáneas; los suscriptores deben esperar a que el Agente de instantáneas termine antes de poder sincronizarse.

El Agente de instantáneas ejecuta los pasos siguientes:

1. Establece una conexión del distribuidor al publicador y, a continuación, si fuera necesario, adopta bloqueos en las tablas publicadas:

Para las publicaciones de mezcla, el Agente de instantáneas no adopta ningún bloqueo.

Para las publicaciones transaccionales, el Agente de instantáneas adopta bloqueos de manera predeterminada únicamente durante la fase inicial de la generación de instantáneas.

Para las publicaciones de instantáneas, adopta bloqueos durante todo el proceso de generación de instantáneas.

2. Escribe una copia del esquema de la tabla para cada artículo en un archivo .SCH. Si se publican otros objetos de base de datos, como índices, restricciones, procedimientos almacenados, vistas, funciones definidas por el usuario, etc., se generan archivos de scripts adicionales.

3. Copia los datos de la tabla publicada en el publicador y escribe los datos en la carpeta de instantáneas. La instantánea se genera como un conjunto de archivos de programa de copia masiva (BCP).

4. En las publicaciones de instantáneas y transaccionales, el Agente de instantáneas anexa filas a las tablas MSrepl_commands y MSrepl_transactions de la base de datos de distribución. Las entradas de la tabla MSrepl_commands son comandos que indican la ubicación de los archivos .SCH y .bcp, de cualquier otro archivo de instantáneas y de las referencias a cualquier script anterior o posterior a la instantánea. Las entradas de la tabla MSrepl_transactions son comandos importantes para sincronizar el suscriptor.

5. Libera los bloqueos de las tablas publicadas.

Durante la generación de instantáneas, no es posible realizar cambios en el esquema de las tablas publicadas. Después de generar los archivos de instantáneas, podrá verlos en la carpeta de instantáneas mediante el Explorador de Windows.

Agente de distribución y Agente de mezcla

Ingeniería Informática y de Sistemas. Página 3

Page 4: La replicación

Replicación de una Base de Datos (SQL Server)

En las publicaciones de instantáneas, cada vez que el Agente de distribución se ejecuta para la publicación, mueve una nueva instantánea a cada suscriptor que aún no se ha sincronizado, se ha marcado para volver a inicializarse o incluye nuevos artículos.

En la replicación de instantáneas y transaccional, el Agente de distribución realiza los siguientes pasos:

1. Establece una conexión con el distribuidor.2. Examina las tablas MSrepl_commands y MSrepl_transactions de la base de

datos de distribución del distribuidor. El agente lee la ubicación de los archivos de instantáneas de la primera tabla y los comandos de sincronización del suscriptor de ambas tablas.

3. Aplica el esquema y los comandos a la base de datos de suscripciones.

En una publicación de replicación de mezcla sin filtrar, el Agente de mezcla realiza los siguientes pasos:

1. Establece una conexión con el publicador.2. Examina la tabla sysmergeschemachange del publicador y determina si existe

una nueva instantánea que deba aplicarse a éste.3. Si hay una nueva instantánea disponible, el Agente de mezcla aplica los

archivos de instantáneas de la ubicación especificada en sysmergeschemachange a la base de datos de suscripciones.

Replicación transaccional

La replicación transaccional se implementa con el Agente de instantáneas, el Agente de registro del LOG y el Agente de distribución de SQL Server. El Agente de instantáneas prepara archivos de instantáneas que contienen esquemas y datos de las tablas y objetos de base de datos publicados, almacena los archivos en la carpeta de instantáneas y registra los trabajos de sincronización en la base de datos de distribución del distribuidor.

El Agente de registro del LOG supervisa el registro de transacciones de cada base de datos configurada para la replicación transaccional y copia las transacciones marcadas para ser replicadas desde el registro de transacciones a la base de datos de distribución, que actúa como una cola de almacenamiento y reenvío confiable. El Agente de distribución copia los archivos de instantáneas iniciales de la carpeta de instantáneas y las transacciones almacenadas en las tablas de la base de datos de distribución a los suscriptores.

Los cambios incrementales realizados en el publicador se transfieren a los suscriptores de acuerdo con la programación del Agente de distribución, que se puede ejecutar continuamente para que la latencia sea mínima o a intervalos programados. Puesto que los datos deben cambiarse en el publicador (cuando se utiliza la replicación transaccional sin las opciones de actualización inmediata ni de actualización en cola), se evita que se produzcan conflictos de actualización. Al final, todos los suscriptores disponen de los mismos valores que el publicador. Si se utilizan las opciones de

Ingeniería Informática y de Sistemas. Página 4

Page 5: La replicación

Replicación de una Base de Datos (SQL Server)

actualización inmediata o de actualización en cola con la replicación transaccional, las actualizaciones pueden realizarse en el suscriptor y, con la actualización en cola, pueden producirse conflictos.

Replicación de mezcla

El Agente de instantáneas y el Agente de mezcla de SQL Server implementan la replicación de mezcla. Si la publicación no se filtra o utiliza filtros estáticos, el Agente de instantáneas crea una sola instantánea. Si la publicación utiliza filtros con parámetros, el Agente de instantáneas crea una instantánea para cada partición de datos. El Agente de mezcla aplica las instantáneas iniciales a los suscriptores. También mezcla los cambios incrementales de los datos que tienen lugar en el publicador o en los suscriptores después de la creación de la instantánea inicial y detecta y resuelve los conflictos según las reglas que configure.

En el siguiente diagrama se muestran los componentes que se utilizan en la replicación de mezcla.

Ingeniería Informática y de Sistemas. Página 5

Page 6: La replicación

Replicación de una Base de Datos (SQL Server)

Información general del modelo de publicación de replicación

La replicación utiliza una metáfora del sector editorial para representar los componentes de una topología de replicación, que incluyen el publicador, el distribuidor, los suscriptores, las publicaciones, los artículos y las suscripciones. Resulta útil pensar en la replicación de Microsoft SQL Server como si fuera una revista:

El publicador (editor) de una revista produce una o más publicaciones. Una publicación contiene artículos. El publicador distribuye la revista directamente o a través de un distribuidor. Los suscriptores reciben las publicaciones a las que se han suscrito.

Aunque la metáfora de la revista es útil para comprender la replicación, es importante señalar que la replicación de SQL Server incluye funciones que no están representadas en esta metáfora, en particular, la posibilidad de que un suscriptor realice actualizaciones y de que un publicador envíe cambios incrementales a los artículos de una publicación.

Una topología de replicación define la relación entre los servidores y las copias de los datos, y aclara la lógica que determina cómo fluyen los datos entre los servidores. Hay varios procesos de replicación (denominados agentes) que son responsables de copiar y mover los datos entre el publicador y los suscriptores. En la siguiente ilustración se muestra información general acerca de los componentes y procesos que participan en la replicación.

Ingeniería Informática y de Sistemas. Página 6

Page 7: La replicación

Replicación de una Base de Datos (SQL Server)

Publicador

El publicador es una instancia de base de datos que permite que los datos estén disponibles para otras ubicaciones a través de la replicación. El publicador puede tener una o más publicaciones, cada una de las cuales representa un conjunto de objetos y datos relacionados lógicamente para replicar.

Distribuidor

El distribuidor es una instancia de base de datos que funciona como almacén para datos específicos de replicación asociados con uno o más publicadores. Cada publicador está asociado con una sola base de datos (conocida como la base de datos de distribución) en el distribuidor. La base de datos de distribución almacena los datos de estado de la replicación, metadatos acerca de la publicación y, en algunos casos, funciona como cola para los datos que se transfieren del publicador a los suscriptores. En muchos casos, una sola instancia de servidor de bases de datos funciona como publicador y como distribuidor Esto se conoce como un distribuidor local. Cuando el publicador y el distribuidor se configuran en instancias distintas del servidor de bases de datos, el distribuidor se denomina un distribuidor remoto.Suscriptores

Un suscriptor es una instancia de base de datos que recibe datos replicados. Un suscriptor puede recibir datos de varios publicadores y publicaciones. En función del tipo de replicación elegida, el suscriptor también puede devolver los datos modificados al publicador o volver a publicar los datos en otros suscriptores.

Artículo

Un artículo identifica un objeto de base de datos incluido en una publicación. Una publicación puede contener diferentes tipos de artículos, como tablas, vistas, procedimientos almacenados y otros objetos. Cuando las tablas se publican como artículos, se pueden usar filtros para restringir las columnas y filas de datos que se envían a los suscriptores.

Ingeniería Informática y de Sistemas. Página 7

Page 8: La replicación

Replicación de una Base de Datos (SQL Server)

Publicación

Una publicación es un conjunto de uno o más artículos de una base de datos. La agrupación de varios artículos en una publicación permite especificar más fácilmente un conjunto de objetos y datos de bases de datos relacionados lógicamente, que se replican como una unidad.

Suscripción

Una suscripción es una solicitud de una copia de una publicación que se entrega a un suscriptor. La suscripción define qué publicación se recibirá, dónde y cuándo. Hay dos tipos de suscripciones: de inserción y de extracción.

Información general sobre los agentes de replicación

La replicación utiliza varios programas independientes, llamados agentes, para realizar las tareas asociadas con el seguimiento de los cambios y la distribución de los datos. De forma predeterminada, los agentes de replicación se ejecutan como trabajos programados en el Agente SQL Server y es necesario que se esté ejecutando el Agente SQL Server para que puedan ejecutarse los trabajos. Los agentes de replicación también se pueden ejecutar desde la línea de comandos y en aplicaciones que utilizan Objetos de administración de replicación (RMO). Los agentes de replicación se pueden administrar desde el Monitor de replicación de SQL Server y SQL Server Management Studio.

Agente SQL Server

El Agente SQL Server aloja y programa los agentes utilizados en la replicación, y proporciona una manera sencilla de ejecutar los agentes de replicación. El Agente SQL Server también controla y supervisa las operaciones fuera de la replicación.

Agente de instantáneas

Por lo general, el Agente de instantáneas se utiliza con todos los tipos de replicación. Prepara esquemas y archivos de datos iniciales de tablas publicadas y otros objetos, almacena los archivos de instantáneas y registra la información acerca del estado de sincronización en la base de datos de distribución. El Agente de instantáneas se ejecuta en el distribuidor.

Agente de registro del LOG

El Agente de registro del LOG se utiliza en la replicación transaccional. Mueve las transacciones marcadas para replicación desde el registro de transacciones del publicador a la base de datos de distribución. Cada base de datos publicada con la replicación transaccional tiene su propio Agente de registro del LOG, que se ejecuta en el distribuidor y se conecta al publicador (el distribuidor puede estar en el mismo equipo que el publicador).

Ingeniería Informática y de Sistemas. Página 8

Page 9: La replicación

Replicación de una Base de Datos (SQL Server)

Agente de distribución

El Agente de distribución se utiliza en la replicación de instantáneas y transaccional. Aplica la instantánea inicial al suscriptor y mueve las transacciones contenidas en la base de datos de distribución a los suscriptores. El Agente de distribución se ejecuta en el distribuidor, para las suscripciones de inserción, o en el suscriptor, para las suscripciones de extracción.

Agente de mezcla

El Agente de mezcla se utiliza con la replicación de mezcla. Aplica la instantánea inicial al suscriptor, y transfiere y reconcilia los cambios incrementales de datos que se producen. Cada suscripción de mezcla tiene su propio Agente de mezcla, que se conecta con el publicador y con el suscriptor, y los actualiza. El Agente de mezcla se ejecuta en el distribuidor, para las suscripciones de inserción, o en el suscriptor, para las suscripciones de extracción. De forma predeterminada, el Agente de mezcla carga los cambios del suscriptor al publicador y, a continuación, descarga los cambios del publicador al suscriptor.

Agente de lectura de cola

El Agente de lectura de cola se utiliza con la replicación transaccional y la opción de actualización en cola. El agente se ejecuta en el distribuidor y transfiere los cambios realizados en el suscriptor de vuelta al publicador. A diferencia del Agente de distribución y del Agente de mezcla, sólo existe una instancia del Agente de lectura de cola para todos los publicadores y las publicaciones de una determinada base de datos.

Trabajos de mantenimiento de la replicación

La replicación incluye varios trabajos de mantenimiento que realizan operaciones de mantenimiento programadas y a petición.

Conceptos sobre los procedimientos almacenados del sistema de replicación

En SQL Server, el acceso mediante programación a toda la funcionalidad configurable por el usuario en una topología de replicación se proporciona mediante procedimientos almacenados del sistema. Aunque los procedimientos almacenados se pueden ejecutar individualmente utilizando SQL Server Management Studio o el programa de línea de comandos sqlcmd, puede ser beneficioso escribir archivos de script de Transact-SQL que se pueden ejecutar para realizar una secuencia lógica de tareas de replicación.

Las tareas de replicación de scripts proporcionan las ventajas siguientes:

Se mantiene una copia permanente de los pasos que se usan para implementar la topología de replicación.

Ingeniería Informática y de Sistemas. Página 9

Page 10: La replicación

Replicación de una Base de Datos (SQL Server)

Se usa un único script para configurar varios suscriptores. Se instruye rápidamente a los nuevos administradores de bases de datos

permitiéndoles evaluar, entender, cambiar o solucionar problemas del código.

Crear scripts de replicación

Desde el punto de vista de la replicación, un script es una serie de una o varias instrucciones de Transact-SQL que cada una ejecuta un procedimiento almacenado de replicación. Los scripts son archivos de texto, a menudo con la extensión .sql, que se pueden ejecutar utilizando la utilidad sqlcmd. Cuando se ejecuta un archivo de script, la utilidad ejecuta las instrucciones de SQL almacenadas en él. De igual forma, un script puede almacenarse como un objeto de consulta en un proyecto de SQL Server Management Studio.

Los scripts de replicación se pueden crear de las maneras siguientes:

Manualmente. Use las características de generación de scripts que se proporcionan en los

asistentes de replicación o SQL Server Management Studio. Para obtener más información, vea Cómo

generar scripts de objetos de replicación (SQL Server Management Studio). Utilice Objetos de administración de replicación (RMO) para generar mediante

programación el script y crear un objeto RMO.

Al crear manualmente los scripts de replicación, tenga presente las consideraciones siguientes:

Los scripts Transact-SQL constan de uno o varios lotes. El comando GO señala el final de un lote. Si un script de Transact-SQL no contiene ningún comando GO, se ejecutará como un único lote.

Al ejecutar varios procedimientos almacenados de la replicación en un único lote, después del primer procedimiento, la palabra clave EXECUTE debe preceder todos a los procedimientos subsiguientes en el lote.

Todos los procedimientos almacenados en un lote deben compilarse antes de que se ejecute un lote. Sin embargo, una vez compilado el lote y creado un plan de ejecución, un error de tiempo de ejecución puede aparecer o no.

Al crear scripts para configurar la replicación, debería utilizar la autenticación de Windows para evitar almacenar las credenciales de seguridad en el archivo de script. Si debe almacenar las credenciales en un archivo de script, debe protegerlo para evitar el acceso no autorizado.

Ingeniería Informática y de Sistemas. Página 10

Page 11: La replicación

Replicación de una Base de Datos (SQL Server)

Ejemplo de script de replicación

El script siguiente se puede ejecutar para configurar la publicación y distribución en un servidor.

TSQL

-- This script uses sqlcmd scripting variables. They are in the form-- $(MyVariable). For information about how to use scripting variables -- on the command line and in SQL Server Management Studio, see the -- "Executing Replication Scripts" section in the topic-- "Programming Replication Using System Stored Procedures".

-- Install the Distributor and the distribution database.DECLARE @distributor AS sysname;DECLARE @distributionDB AS sysname;DECLARE @publisher AS sysname;DECLARE @directory AS nvarchar(500);DECLARE @publicationDB AS sysname;-- Specify the Distributor name.SET @distributor = $(DistPubServer);-- Specify the distribution database.SET @distributionDB = N'distribution';-- Specify the Publisher name.SET @publisher = $(DistPubServer);-- Specify the replication working directory.SET @directory = N'\\' + $(DistPubServer) + '\repldata';-- Specify the publication database.SET @publicationDB = N'AdventureWorks';

-- Install the server MYDISTPUB as a Distributor using the defaults,-- including autogenerating the distributor password.USE masterEXEC sp_adddistributor @distributor = @distributor;

-- Create a new distribution database using the defaults, including-- using Windows Authentication.USE masterEXEC sp_adddistributiondb @database = @distributionDB, @security_mode = 1;GO

-- Create a Publisher and enable AdventureWorks for replication.-- Add MYDISTPUB as a publisher with MYDISTPUB as a local distributor-- and use Windows Authentication.DECLARE @distributionDB AS sysname;DECLARE @publisher AS sysname;-- Specify the distribution database.

Ingeniería Informática y de Sistemas. Página 11

Page 12: La replicación

Replicación de una Base de Datos (SQL Server)

SET @distributionDB = N'distribution';-- Specify the Publisher name.SET @publisher = $(DistPubServer);

USE [distribution]EXEC sp_adddistpublisher @publisher=@publisher, @distribution_db=@distributionDB, @security_mode = 1;GO

Este script puede guardarse enconces localmente como instdistpub.sql para que se pueda ejecutar o volver a ejecutar cuando sea necesario.

El script anterior incluye variables de scripts de sqlcmd, que se utilizan en muchos de los ejemplos de código de replicación de los Libros en pantalla de SQL Server. Las variables de scripts se definen utilizando la sintaxis $(MyVariable). Los valores para las variables se pueden pasar a un script en la línea de comandos o en SQL Server Management Studio. Para obtener más información, consulte la sección siguiente en este tema, "Ejecutar scripts de replicación".

Ejecutar scripts de replicación

Una vez creado, un script de replicación se puede ejecutar de alguna de las maneras siguientes:

Crear un archivo de SQL Query en SQL Server Management Studio

Un archivo de script de Transact-SQL de replicación se puede crear como un archivo SQL de SQL Query en un proyecto de SQL Server Management Studio. Una vez escrito el script, se puede realizar una conexión a la base de datos para este archivo de consulta y se puede ejecutar el script.

Para utilizar un script que incluya variables de script, SQL Server Management Studio debe estar ejecutándose en modo sqlcmd. En el modo sqlcmd, el Editor de consultas acepta una sintaxis adicional concreta de sqlcmd, como :setvar, que se utiliza como valor de una variable.

. En el script siguiente, se usa :setvar para proporcionar un valor para la variable $(DistPubServer).

:setvar DistPubServer N'MyPublisherAndDistributor';

-- Install the Distributor and the distribution database.DECLARE @distributor AS sysname;DECLARE @distributionDB AS sysname;DECLARE @publisher AS sysname;DECLARE @directory AS nvarchar(500);DECLARE @publicationDB AS sysname;

Ingeniería Informática y de Sistemas. Página 12

Page 13: La replicación

Replicación de una Base de Datos (SQL Server)

-- Specify the Distributor name.SET @distributor = $(DistPubServer);-- Specify the distribution database.SET @distributionDB = N'distribution';-- Specify the Publisher name.SET @publisher = $(DistPubServer);

---- Additional code goes here--

Usar la utilidad sqlcmd desde la línea de comandos

El ejemplo siguiente muestra cómo se usa la línea de comandos para ejecutar el archivo de script instdistpub.sql mediante la utilidad sqlcmd:

sqlcmd.exe -E -S sqlserverinstance -i C:\instdistpub.sql -o C:\output.log -v DistPubServer="N'MyDistributorAndPublisher'"

En este ejemplo, el modificador -E indica que al conectarse a SQL Server se utiliza la autenticación de Windows. Al usar la autenticación de Windows, no hay necesidad de almacenar un nombre de usuario y una contraseña en el archivo de script. El modificador -i especifica el nombre y la ruta de acceso del archivo de script y el modificador -oespecifica el nombre del archivo de salida (cuando se utiliza este modificador, la salida de SQL Server se escribe en este archivo en lugar de en la consola). La utilidad sqlcmdle permite pasar las variables de scripts a un script de Transact-SQL en tiempo de ejecución utilizando el modificador -v. En este ejemplo, sqlcmd reemplaza cada instancia de$(DistPubServer) en el script con el valor N'MyDistributorAndPublisher' antes de la ejecución

Automatizar tareas en un archivo por lotes

Mediante un archivo por lotes, las tareas de administración de replicación, las tareas de sincronización de replicación y otras diversas se pueden automatizar en el mismo archivo por lotes. El archivo por lotes siguiente utiliza la utilidad sqlcmd para quitar y volver a crear la base de datos de suscripciones y agregar una suscripción de extracción de mezcla. A continuación, el archivo invoca al agente de mezcla para sincronizar la nueva suscripción:

TSQL

REM ----------------------Script to synchronize merge subscription ----------------------REM -- Creates subscription database and REM -- synchronizes the subscription to MergeSalesPerson.REM -- Current computer acts as both Publisher and Subscriber.REM -------------------------------------------------------------------------------------

SET Publisher=%computername%

Ingeniería Informática y de Sistemas. Página 13

Page 14: La replicación

Replicación de una Base de Datos (SQL Server)

SET Subscriber=%computername%SET PubDb=AdventureWorksSET SubDb=AdventureWorksReplicaSET PubName=AdvWorksSalesOrdersMerge

REM -- Drop and recreate the subscription database at the Subscribersqlcmd /S%Subscriber% /E /Q"USE master IF EXISTS (SELECT * FROM sysdatabases WHERE name='%SubDb%' ) DROP DATABASE %SubDb%"sqlcmd /S%Subscriber% /E /Q"USE master CREATE DATABASE %SubDb%"

REM -- Add a pull subscription at the Subscribersqlcmd /S%Subscriber% /E /Q"USE %SubDb% EXEC sp_addmergepullsubscription @publisher = %Publisher%, @publication = %PubName%, @publisher_db = %PubDb%"sqlcmd /S%Subscriber% /E /Q"USE %SubDb% EXEC sp_addmergepullsubscription_agent @publisher = %Publisher%, @publisher_db = %PubDb%, @publication = %PubName%, @subscriber = %Subscriber%, @subscriber_db = %SubDb%, @distributor = %Publisher%"

REM -- This batch file starts the merge agent at the Subscriber to REM -- synchronize a pull subscription to a merge publication.REM -- The following must be supplied on one line."\Program Files\Microsoft SQL Server\100\COM\REPLMERG.EXE" -Publisher %Publisher% -Subscriber %Subscriber% -Distributor %Publisher% -PublisherDB %PubDb% -SubscriberDB %SubDb% -Publication %PubName% -PublisherSecurityMode 1 -OutputVerboseLevel 1 -Output -SubscriberSecurityMode 1 -SubscriptionType 1 -DistributorSecurityMode 1 -Validate 3

Incluir en scripts tareas de replicación comunes

Las siguientes son algunas de las tareas de replicación más comunes que se pueden incluir en scripts utilizando procedimientos almacenados del sistema:

Configurar la publicación y la distribución Modificar las propiedades del distribuidor y del publicador Deshabilitar la publicación y la distribución Crear publicaciones y definir artículos Eliminar publicaciones y artículos Crear una suscripción de extracción Modificar una suscripción de extracción Eliminar una suscripción de extracción Crear una suscripción de inserción Modificar una suscripción de inserción Eliminar una suscripción de inserción Sincronizar una suscripción de extracción

Ingeniería Informática y de Sistemas. Página 14

Page 15: La replicación

Replicación de una Base de Datos (SQL Server)

Conceptos de la programación de replicación

Antes de desarrollar una aplicación que utilice funcionalidades de replicación, debería seguir los pasos de planeamiento generales siguientes:

1. Definir la topología de replicación.2. Definir la funcionalidad de la aplicación.3. Planear la seguridad.4. Elegir un entorno de desarrollo.5. Elegir la interfaz de programación de la replicación adecuada.

El resto de este tema describe estos pasos con más detalle. Para ayudar a mostrar el proceso de planeamiento, se ha incluido un ejemplo.

Definir la topología de replicación

El primer paso para programar la replicación es definir la topología de replicación de la aplicación. Si está creando una aplicación que vaya a usar una topología de replicación existente, por ejemplo una aplicación cliente que tiene acceso a los datos de un suscriptor existente, debería continuar en el paso siguiente.

La topología de replicación que defina depende de muchos factores, como son los siguientes:

Si los datos replicados tienen que estar actualizados y quién debe actualizarlos. Las necesidades de distribución de los datos con respecto a la coherencia,

autonomía y latencia. El entorno de replicación, incluidos los usuarios empresariales, la infraestructura

técnica, la red y la seguridad, y las características de los datos. Los tipos y las opciones de replicación. Las topologías de replicación y cómo se alinean con los tipos de replicación.

Definir la funcionalidad de la aplicación

Una vez definida la topología de replicación, debería decidir las funcionalidades que la aplicación proporcionará. Estas funcionalidades pueden abarcar desde un script que sincronice una suscripción a una aplicación con una interfaz de usuario para configurar la replicación. La replicación admite las tareas generales de programación siguientes:

Configurar la replicación. Sincronizar suscripciones. Mantener una topología de replicación. Supervisar una topología de replicación. Solucionar problemas de la replicación.

También es común ampliar la aplicación combinando las funcionalidades de replicación con otras funcionalidades que se proporcionan a través de SQL Server. En la tabla

Ingeniería Informática y de Sistemas. Página 15

Page 16: La replicación

Replicación de una Base de Datos (SQL Server)

siguiente se resaltan algunas funcionalidades extendidas que podría proporcionar en la aplicación de replicación.

Planear la seguridad

La seguridad es importante en cualquier aplicación y su planeamiento se debería completar antes de escribir ningún código. La seguridad de la aplicación puede dividirse en tres partes principales: proteger la base de datos, proteger la replicación y escribir código seguro.

Los siguientes temas proporcionan información sobre la seguridad:

Seguridad y protección (replicación) Seguridad y protección (motor de base de datos)

Elegir un entorno de desarrollo

Al desarrollar una aplicación de replicación, hay que considerar tres entornos de desarrollo básicos. Cada uno tiene acceso a las mismas funcionalidades de replicación con algunas excepciones. Las aplicaciones de replicación se pueden desarrollar en cada uno de los entornos siguientes.

Código administrado

Entorno de desarrollo orientado a objetos que aprovecha las ventajas de la programación de .NET Framework y Common Language Runtime (CLR) de .NET. El código administrado es el entorno de programación recomendado para el desarrollo de .NET y para las aplicaciones de SQL Server. Las interfaces de replicación administradas habilitan la programación de la administración de la replicación de una manera orientada a objetos sin tener que conocer Transact-SQL y también proporcionan algunas funcionalidades de devolución de llamada al ejecutar agentes de replicación que no están disponibles en los scripts. El código administrado es el mejor entorno para desarrollar componentes reutilizables y aplicaciones de interfaz de usuario.

Scripts

Aplicaciones sencillas que ejecutan una serie de comandos como procedimientos almacenados del sistema de replicación en scripts o comandos de Transact-SQL

en archivos por lotes. Aunque puede ejecutar los scripts en un entorno administrado utilizando el proveedor administrado en proceso de SQL Server, la

misma funcionalidad se puede obtener mediante interfaces de replicación administradas, que también proporcionan funcionalidades de devolución de

llamada. Los scripts son el entorno mejor para ejecutar tareas que se ejecutarán sólo algunas veces y en las que no se requieren las funcionalidades de

devolución de llamada, como instalar un servidor de replicación.

Código nativo

Ingeniería Informática y de Sistemas. Página 16

Page 17: La replicación

Replicación de una Base de Datos (SQL Server)

El CLR no administra el entorno de desarrollo orientado a objetos que utiliza el acceso directo al sistema o a los objetos COM como ese código. Las interfaces de replicación de código nativo han quedado obsoletas o han dejado de utilizarse.

Elegir la interfaz de programación de replicación adecuada

El último paso del planeamiento es elegir la interfaz de programación de la replicación adecuada que implementa la funcionalidad de replicación deseada para el entorno de desarrollo escogido. En la tabla siguiente se muestran las interfaces de programación de la replicación disponible.

Ejemplo

En Adventure Works, tienen que publicarse los datos de 200 representantes de ventas de todo el mundo. Los representantes de ventas viajan a menudo y necesitan utilizar equipos portátiles o asistentes digitales personales (PDA) para cambiar los datos de los clientes y agregar los pedidos nuevos. A continuación, los cambios tendrán que sincronizarse con el publicador cuando el representante de ventas conecte el portátil a la red.

Para esta aplicación, los pasos de planeamiento podrían ser similares a los siguientes:

1. La topología de replicación de esta aplicación ya existe. Sin embargo, debe crearse una suscripción de extracción nueva en el cliente. La publicación debería utilizar filtros parame trizados para replicar un conjunto único de datos para cada representante de ventas.

2. Además del acceso a datos típico requerido para una aplicación de ventas, esta aplicación debería permitir que un vendedor sincronizara la suscripción de extracción a petición haciendo clic en un botón. Puesto que un representante de ventas instalará y ejecutará la aplicación, también necesita poder configurar una suscripción y aplicar la instantánea inicial en el cliente. Opcionalmente, la aplicación utilizará la infraestructura que proporciona Windows para detectar la conectividad inalámbrica y sincronizar automáticamente la suscripción cuando se descubra una conexión.

3. Siga todas las instrucciones de seguridad para la replicación, incluido el uso de la autenticación de Windows y una red privada virtual (VPN) al conectarse al publicador. Si está implementando la sincronización web, utilice una conexión de capa de sockets seguros (SSL). Para aprovechar las características de .NET Framework, la aplicación se desarrolla utilizando un lenguaje de código administrado.

4. Según estos requisitos, la interfaz administrada de Objetos de administración de la replicación (RMO) puede proporcionar toda la funcionalidad de la replicación que se necesita para esta aplicación.

Ingeniería Informática y de Sistemas. Página 17

Page 18: La replicación

Replicación de una Base de Datos (SQL Server)

Conceptos de los Objetos de administración de replicación (RMO)

Introducción a la programación de RMO

RMO está diseñado para programar todos los aspectos de la replicación de SQL Server. El espacio de nombres de RMO es Microsoft.SqlServer.Replication y lo implementa Microsoft.SqlServer.Rmo.dll, que es un ensamblado de Microsoft .NET Framework. El ensamblado Microsoft.SqlServer.Replication.dll, que también pertenece al espacio de nombres Microsoft.SqlServer.Replication, implementa una interfaz de código administrado para programar varios agentes de replicación (Agente de instantáneas, Agente de distribución y Agente de mezcla). Se puede tener acceso a sus clases desde RMO para sincronizar las suscripciones. Las clases en el espacio de nombresMicrosoft.SqlServer.Replication.BusinessLogicSupport, que implementa el ensamblado Microsoft.SqlServer.Replication.BusinessLogicSupport.dll, se utilizan para crear una lógica empresarial personalizada para la replicación de mezcla. Este ensamblado es independiente de RMO.

Implementar aplicaciones basadas en RMO

RMO depende de los componentes de replicación y de conectividad de cliente que están incluidos con todas las versiones de SQL Server excepto SQL Server Compact. Para implementar una aplicación basada en RMO, debe instalar una versión de SQL Server que incluye componentes de replicación y de conectividad de cliente en el equipo en el que se vaya a ejecutar la aplicación.

Introducción a RMO

En esta sección se describe cómo iniciar un proyecto RMO simple utilizando Microsoft Visual Studio.

Para crear un proyecto nuevo de Microsoft Visual C#

1. Inicie Visual Studio.2. En el menú Archivo, haga clic en Nuevo proyecto. Aparecerá el cuadro de

diálogo Nuevo proyecto.3. En el cuadro de diálogo Tipos de proyecto, seleccione Proyectos de Visual C#.

En el panel Plantillas, seleccione Aplicación para Windows.4. Opcional) En Nombre, escriba el nombre de la nueva aplicación.5. Haga clic en Aceptar para cargar la plantilla de Windows de Visual C#.6. En el menú Proyecto, seleccione el elemento Agregar referencia. Aparecerá el

cuadro de diálogo Agregar referencia.7. Seleccione los ensamblados siguientes en la lista en la ficha .NET y, a

continuación, haga clic en Aceptar. Interfaz de programación Microsoft.SqlServer.Replication de .NET Microsoft.SqlServer.ConnectionInfo Biblioteca de agentes de replicación

Ingeniería Informática y de Sistemas. Página 18

Page 19: La replicación

Replicación de una Base de Datos (SQL Server)

8. (Opcional) Repita el paso 6. Haga clic en la ficha Examinar, navegue a C:\Archivos de programa\Microsoft SQL Server\100\COM, seleccione Microsoft.SqlServer.Replication.BusinessLogicSupport.dll y, a continuación, haga clic en Aceptar.

9. En el menú Ver, haga clic en Código.10. En el código, antes de la instrucción de espacio de nombres, escriba las

instrucciones using siguientes para certificar los tipos en los espacios de nombres de RMO:

11. // These namespaces are required.12. using Microsoft.SqlServer.Replication;13. using Microsoft.SqlServer.Management.Common;14. // This namespace is only used when creating custom business15. // logic for merge replication.16. using Microsoft.SqlServer.Replication.BusinessLogicSupport;

Para crear un nuevo proyecto de Microsoft Visual Basic .NET

1. Inicie Visual Studio.2. En el menú Archivo, seleccione Nuevo proyecto. Aparecerá el cuadro de

diálogo Nuevo proyecto.3. En el panel Tipos de proyecto, seleccione Visual Basic. En el panel Plantillas,

seleccione Aplicación para Windows.4. (Opcional) En el cuadro Nombre, escriba el nombre de la nueva aplicación.5. Haga clic en Aceptar para cargar la plantilla de Windows de Visual Basic.6. En el menú Proyecto, seleccione Agregar referencia. Aparecerá el cuadro de

diálogo Agregar referencia.7. Seleccione los ensamblados siguientes en la lista en la ficha .NET y, a

continuación, haga clic en Aceptar. Interfaz de programación Microsoft.SqlServer.Replication de .NET Microsoft.SqlServer.ConnectionInfo Biblioteca de agentes de replicación

8. (Opcional) Repita el paso 6. Haga clic en la ficha Examinar, navegue a C:\Archivos de programa\Microsoft SQL Server\100\COM, seleccione Microsoft.SqlServer.Replication.BusinessLogicSupport.dll y haga clic en Aceptar.

9. En el menú Ver, haga clic en Código.10. En el código, antes de ninguna declaración, escriba las

instrucciones Imports siguientes para certificar los tipos en los espacios de nombres de RMO.

11. ' These namespaces are required.12. Imports Microsoft.SqlServer.Replication13. Imports Microsoft.SqlServer.Management.Common14. ' This namespace is only used when creating custom business15. ' logic for merge replication.16. Imports Microsoft.SqlServer.Replication.BusinessLogicSupport

Ingeniería Informática y de Sistemas. Página 19

Page 20: La replicación

Replicación de una Base de Datos (SQL Server)

Conectar a un servidor de replicación

Los objetos de programación de RMO requieren que se realice una conexión a una instancia de SQL Server mediante una instancia de la clase ServerConnection. Esta conexión al servidor se efectúa independientemente de cualquier objeto de programación de RMO. A continuación, se pasa al objeto RMO durante la creación de la instancia o por asignación a la propiedad ConnectionContext del objeto. De esta manera, se pueden crear y administrar los objetos de programación RMO y las instancias de objeto de conexión por separado y se puede reutilizar un objeto de conexión único con varios objetos de programación RMO. Las reglas siguientes se aplican a las conexiones a un servidor de replicación:

Todas las propiedades de la conexión se definen para un objeto ServerConnection dado.

Una conexión a cada instancia de SQL Server debe tener su propio objeto ServerConnection.

El objeto ServerConnection se asigna a la propiedad ConnectionContext del objeto de programación de RMO que se va a crear o al que se va a tener acceso en el servidor.

El método Connect abre la conexión al servidor. Se debe llamar a este método antes de llamar a cualquier método que tenga acceso al servidor en cualquier objeto de programación de RMO que use la conexión.

Dado que tanto RMO como Objetos de administración de SQL Server (SMO) usan la clase ServerConnection para las conexiones a SQL Server, los objetos SMO y RMO pueden utilizar la misma conexión. Para obtener más información, vea Conectarse a una instancia de SQL Server.

Toda la información de autenticación para realizar la conexión e iniciar sesión en el servidor correctamente se proporciona en el objeto ServerConnection.

La autenticación de Windows es el valor predeterminado. Para utilizar la autenticación de SQL Server, LoginSecure debe establecerse en el valor false y Login yPassword debe establecerse en un inicio de sesión y una contraseña de SQL Server válidos. Las credenciales de seguridad siempre deben almacenarse y administrarse de forma segura, y se deben proporcionar en tiempo de ejecución cuando sea posible.

Para las aplicaciones multiproceso, se debe utilizar un objeto ServerConnection independiente en cada subproceso.

Llame al método Disconnect en el objeto ServerConnection para cerrar las conexiones al servidor activas que usan los objetos RMO.

Establecer las propiedades de RMO

Las propiedades de los objetos de programación de RMO representan las propiedades de estos objetos de replicación en el servidor. Al crear nuevos objetos de replicación en el servidor, se utilizan las propiedades de RMO para definirlos. En los objetos existentes, las propiedades de RMO representan sus propiedades, que sólo se pueden

Ingeniería Informática y de Sistemas. Página 20

Page 21: La replicación

Replicación de una Base de Datos (SQL Server)

modificar en el caso de que se puedan escribir o configurar. Las propiedades se pueden establecer en los objetos nuevos o en los objetos existentes.

Establecer propiedades para los nuevos objetos de replicación

Al crear un nuevo objeto de replicación en el servidor, debe especificar todas las propiedades necesarias antes de llamar al método Create del objeto.

Establecer propiedades para los objetos de replicación existentes

Para algunos de los objetos de replicación que existen en el servidor, RMO podría admitir la capacidad de cambiar algunas o todas sus propiedades. Sólo es posible cambiar las propiedades que se puedan escribir o configurar. Para poder cambiar las propiedades, se debe llamar al método Load o LoadProperties para recibir las propiedades actuales del servidor. Llamar a estos métodos indica que un objeto existente se está modificando.

De forma predeterminada, al cambiar las propiedades del objeto, RMO confirma estos cambios en el servidor según el modo de ejecución de ServerConnection que se esté usando. El método IsExistingObject se puede utilizar para comprobar que un objeto existe en el servidor antes de intentar recuperar o cambiar sus propiedades..

Almacenar en memoria caché los cambios de propiedades

Cuando la propiedad SqlExecutionModes está establecida en CaptureSql todas las instrucciones Transact-SQL generadas por RMO se capturan para que se puedan ejecutar manualmente en un lote único utilizando alguno de los métodos de ejecución. RMO le permite almacenar en memoria caché los cambios de las propiedades y las confirma conjuntamente en un único lote utilizando el método CommitPropertyChanges del objeto. Para almacenar en caché los cambios de las propiedades, la propiedadCachePropertyChanges del objeto debe estar establecida en true. Al almacenar en memoria caché los cambios de las propiedades en RMO, el objeto ServerConnectiontodavía controla cuándo se envían los cambios al servidor.

Escenario

Este ejemplo resalta una topología de replicación de mezcla para entregar datos a usuarios móviles, y también muestra las características de programación de la replicación de mezcla en SQL Server. Este ejemplo es una aplicación basada en Windows Forms que utiliza tecnologías de acceso de datos estándar de Microsoft y la replicación de mezcla para permitir que un vendedor realice el mantenimiento de sus datos locales y lleve a cabo una sincronización periódica con la oficina central. Este ejemplo es compatible con aquellos suscriptores que ejecuten cualquier edición de SQL Server. La publicación también es compatible con los suscriptores de SQL Server Compact 3.5 SP1. Para obtener más información acerca de este escenario de ejemplo, vea Caso de ejemplo Sales Orders.

Ingeniería Informática y de Sistemas. Página 21

Page 22: La replicación

Replicación de una Base de Datos (SQL Server)

Lenguajes

C# Transact-SQL

Características

El ejemplo Sales Orders muestra las siguientes características de la replicación de mezcla:

Objetos de administración de replicación (RMO) Filtros de fila con parámetros Particiones precalculadas Instantánea con particiones solicitada por el cliente Optimizaciones de rendimiento basadas en el tipo de artículo SQL Server Compact 3.5 SP1 y suscriptores de SQL Server Express. Administración automática del intervalo de identidades Controladores de lógica de negocios Sincronización Web (opcional)

Requisitos previos

Antes de ejecutar este ejemplo, asegúrese de que esté instalado el siguiente software:

SQL Server 2005 o versión posterior, incluidos los siguientes componentes instalados opcionalmente:

Servicios de SQL Server Database Engine (Motor de base de datos de SQL Server) (incluida la replicación)

Herramientas cliente Base de datos OLTP de ejemplo AdventureWorks. Esta base de datos de

ejemplo está disponible en la página Microsoft SQL Server Samples and Community Projects en CodePlex.

Los ejemplos de SQL Server. Estos ejemplos están disponibles en la página Microsoft SQL Server Samples and Community Projects en CodePlex

Permisos necesarios

Los permisos necesarios para configurar y ejecutar el ejemplo Sales Orders se basan en las necesidades de seguridad de replicación y son los siguientes:

Para ejecutar InstallSalesOrdersSample.bat, que configura la replicación, crea la publicación AdvWorksSalesOrders y genera la instantánea inicial, su cuenta de Windows debe ser miembro de la función fija de servidor sysadmin en el publicador.

El ejemplo Sales Orders realiza varias tareas del Database Engine (Motor de base de datos) y replicación, incluida la creación de la base de

Ingeniería Informática y de Sistemas. Página 22

Page 23: La replicación

Replicación de una Base de Datos (SQL Server)

datosAdventureWorksLocal, la creación de la suscripción local y la ejecución del Agente de mezcla para inicializar, reinicializar o sincronizar la suscripción. Para ejecutar correctamente el ejecutable del ejemplo (SalesOrders.exe) en el suscriptor, su cuenta de Windows debe tener por lo menos el permiso CREATE DATABASE en el suscriptor.

Para inicializar la suscripción y sincronizarse con el publicador, la cuenta de Windows utilizada para conectarse al publicador (o al servidor Web si se usa la sincronización Web) debe cumplir los siguientes requisitos:

Tener un inicio de sesión válido en el publicador asociado a un usuario en la base de datos de publicaciones.

Tener un inicio de sesión válido en el distribuidor asociado a un usuario en la base de datos de distribución (del usuario invitado).

Ser miembro de la lista de acceso a la publicación (PAL) AdvWorksSalesOrders.

Generar y configurar el ejemplo

Para generar el proyecto de ejemplo y configurar la topología de replicación, debe hacer lo siguiente:

En el publicador, ejecute el script de instalación de replicación. (Opcional) Configure el servidor de Internet Information Services (IIS) para

admitir la sincronización Web para la replicación de mezcla. Si no se hace esto, no se puede usar la característica de sincronización Web del ejemplo.

En el suscriptor, modifique la configuración en el archivo app.config del ejemplo. En el suscriptor, genere el ejemplo mediante el SDK de Visual Studio 2005 o .NET

Framework 2.0. En el suscriptor, coloque una copia del ensamblado BusinessLogic.dll en el

directorio C:\Archivos de programa\Microsoft SQL Server\100\COM. Cuando se utiliza la sincronización web, también debe colocar una copia del archivo BusinessLogic.dll en el directorio C:\Archivos de programa\Microsoft SQL Server\100\COM en el servidor web.

Para configurar el ejemplo Sales Orders en el publicador

1. Asegúrese de que la base de datos de ejemplo AdventureWorks se haya instalado y esté adjuntada. Asegúrese de que los ejemplos de SQL Server Database Engine (Motor de base de datos de SQL Server) se han instalado. Para obtener más información,.

2. Asegúrese de que el Agente de SQL Server se esté ejecutando. Puede ver el estado de este servicio e iniciarlo desde el Explorador de objetos en SQL Server Management Studio.

3. Vaya a la ubicación de instalación de los scripts del ejemplo Sales Orders. El valor predeterminado es C:\Archivos de programa\Microsoft SQL Server\100\Samples\Replication\Merge\SalesOrders\Scripts.

4. (Opcional) Configure la Capa de sockets seguros (SSL) en el publicador o en el servidor que se utiliza para la sincronización Web. Se requiere SSL para

Ingeniería Informática y de Sistemas. Página 23

Page 24: La replicación

Replicación de una Base de Datos (SQL Server)

establecer comunicaciones entre el servidor IIS y todos los suscriptores. Para configurar SSL, especifique un certificado de servidor para que lo utilice el servidor IIS.

5. Ejecute InstallSalesOrdersSample.bat y, cuando se le solicite, escriba los datos de inicio de sesión (en el formato con distinción de mayúsculas y minúsculas "DOMINIO\inicio de sesión") y la contraseña para la cuenta de Windows en la cual se ejecutará el trabajo del Agente de instantáneas. De este modo se llama a sqlcmd.exe para que ejecute CreateAdvWorksSalesOrdersPublication.sql, que hace lo siguiente:

Comprueba que la replicación esté configurada en el servidor local y, si no lo está, la configura como un publicador con distribuidor local que usa la base de datos de distribución.

Quita y vuelve a crear los procedimientos almacenados y las funciones definidas por el usuario que se usan para el acceso de datos en el cliente.

Quita y vuelve a crear la publicación AdvWorksSalesOrders. Agrega artículos a la publicación. Registra el controlador de lógica de negocios en el distribuidor. Inicia el trabajo del Agente de instantáneas para general la instantánea

inicial.

El archivo por lotes también puede configurar automáticamente un directorio virtual en el publicador para admitir la sincronización Web. Si prefiere no configurar el directorio virtual en el publicador durante la instalación, o si tiene previsto usar un servidor Web independiente, deberá ejecutar el Asistente para configurar la sincronización Web antes de usar las características de sincronización Web del ejemplo.

6. (Opcional) Ejecute el Asistente para configurar la sincronización Web para configurar un servidor IIS para admitir la sincronización Web. Omita este paso si InstallSalesOrdersSample.bat creó correctamente el directorio virtual o si no va a utilizar la sincronización Web. Para obtener instrucciones completas acerca de cómo usar el asistente, vea How to: Configure an IIS Server for Web Synchronization (SQL Server Management Studio).

7. Antes de continuar, asegúrese de que el trabajo del Agente de instantáneas para la publicación AdvWorksSalesOrders se haya completado correctamente. El estado de este trabajo se puede ver mediante el Monitor de replicación. Agente de instantáneas, vea el

Para generar y configurar el ejemplo Sales Orders en el suscriptor

1. En el símbolo del sistema, navegue al directorio de instalación de ejemplos de SQL Server. El valor predeterminado es C:\Archivos de programa\Microsoft SQL Server\100\Samples.

2. Ejecute lo siguiente en un símbolo del sistema de .NET Framework o Microsoft Visual Studio 2005:

sn -k SampleKey.snk

Ingeniería Informática y de Sistemas. Página 24

Page 25: La replicación

Replicación de una Base de Datos (SQL Server)

3. Vaya a la ubicación de instalación de la solución de ejemplo Sales Orders en Microsoft Visual C#. El valor predeterminado es C:\Archivos de programa\Microsoft SQL Server\100\Samples\Replication\Merge\SalesOrders\CS.

4. Abra el archivo de solución SalesOrders.sln en Visual Studio 2005.5. Genere el proyecto.6. En la carpeta de salida del proyecto, edite el archivo SalesOrders.exe.config y

cambie lo siguiente: Reemplace el valor de la clave del suscriptor con el nombre del servidor

local. Reemplace el valor de la clave del publicador con el nombre del servidor

que se configuró anteriormente como publicador. (Opcional) Reemplace el valor de la clave WebSynchronizationUrl al

conectarse al publicador mediante la sincronización Web. Esto también puede hacerse en el tiempo de ejecución.

(Opcional) Use la clave SyncWhenConnectedInterval para establecer el intervalo entre sincronizaciones, en segundos, cuando utilice la funcionalidad de sincronizar al estar conectado.

7. Coloque una copia del ensamblado BusinessLogic.dll en el directorio C:\Archivos de programa\Microsoft SQL Server\100\COM.

8. (Opcional) Si se usa la sincronización web, coloque una copia del ensamblado BusinessLogic.dll en el directorio C:\Archivos de programa\Microsoft SQL Server\100\COM del servidor web.

Ejecutar el ejemplo

Para ejecutar el ejemplo Sales Orders y sincronizar los datos

1. Asegúrese de que las conexiones remotas estén habilitadas en el publicador y en el suscriptor (TCP/IP o Canalizaciones con nombre) y de que el servicio del Agente SQL Server se esté ejecutando.

2. (Opcional) En el suscriptor, pruebe la conexión de la sincronización web; para ello, conéctese al servidor web en el modo de diagnóstico siguiendo las instrucciones para configurar certificados de cliente en el suscriptor contenidas en How to: Configure Web Synchronization for Merge Replication (Replication Transact-SQL Programming).

3. Inicie SalesOrders.exe desde Visual Studio 2005 o desde el símbolo del sistema. Cuando la aplicación se ejecuta por primera vez, se crean la base de datos de suscripciones y la suscripción, y se inicia el Agente de mezcla para inicializar la suscripción.

4. Una vez que se han inicializado los datos de suscripción, se carga el formulario Sales Orders, mostrando una lista de pedidos existentes que corresponden al vendedor "adventure-works\garrett1".

5. Mediante el formulario Sales Orders, puede hacer los siguientes cambios en los datos de venta:

Editar la información de los pedidos de venta. Agregar un nuevo artículo a un pedido de venta. Eliminar un artículo de un pedido de venta.

Ingeniería Informática y de Sistemas. Página 25

Page 26: La replicación

Replicación de una Base de Datos (SQL Server)

Cambiar la cantidad solicitada para un artículo en un pedido de venta.

6. Seleccionar un método de sincronización en el menú Synchronize para sincronizar la suscripción.

7. (Opcional) Marque Synchronize When Connected para sincronizar la suscripción automáticamente. Establezca el intervalo de sincronización para la sincronización en segundo plano mediante la clave SyncWhenConnectedInterval en el archivo app.config.

Para usar las opciones de sincronización avanzadas del ejemplo Sales Orders

1. En Advanced en el menú Synchronize, seleccione una de las siguientes opciones:

(Opcional) Seleccione una opción de reinicializar para reinicializar la suscripción.

(Opcional) Seleccione Web Synchronization Options y suministre la URL de Internet y las credenciales de autenticación de Windows que se usan para obtener acceso al servidor Web a través de una conexión HTTPS segura. Para usar esta opción, ya debe haber configurado un servidor IIS para la sincronización Web.

(Opcional) Seleccione Get Subscription Status para ver los resultados de las sesiones más recientes del Agente de mezcla.

Eliminar el ejemplo

Utilice el procedimiento siguiente para eliminar el ejemplo Sales Orders.

Para eliminar solamente la suscripción

1. En el suscriptor, ejecute el script siguiente de Transact-SQL para eliminar la suscripción de extracción.

2. En el publicador, ejecute el script siguiente de Transact-SQL para eliminar del registro la suscripción de extracción.

Para eliminar el ejemplo Sales Orders

1. En el publicador, vaya a la ubicación de instalación de los scripts del ejemplo Sales Orders. El valor predeterminado es C:\Archivos de programa\Microsoft SQL Server\100\Samples\Replication\Merge\SalesOrders\Scripts.

2. Ejecute el archivo por lotes RemoveSalesOrdersSample.bat.3. Cuando se le solicite, escriba "Y" y presione ENTRAR para eliminar todos los

objetos de la replicación del publicador, eliminar todos los objetos de replicación de la base de datos de suscripciones y desinstalar la publicación y distribución del publicador.

4. En el suscriptor de la base de datos AdventureWorksLocal, ejecute sp_removedbreplication (Transact-SQL).

5. Cambie el contexto de la base de datos por la base de datos maestra y ejecute DROP DATABASE AdventureWorksLocal.

Ingeniería Informática y de Sistemas. Página 26