Ejemplo Sales Orders para réplica de mezcla

Actualizado: 14 de abril de 2006

Este archivo Léame incluye detalles sobre cómo instalar y ejecutar el ejemplo Sales Orders. En este archivo también se describen los problemas conocidos relacionados con este ejemplo.

Escenario

Este ejemplo resalta una topología de réplica de mezcla para entregar datos a usuarios móviles, y también muestra las características de programación de la réplica de mezcla en SQL Server 2005. Este ejemplo es una aplicación basada en Windows Forms que utiliza tecnologías de acceso de datos estándar de Microsoft y la réplica 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 2005. La publicación también es compatible con los suscriptores de SQL Server Compact Edition. Para obtener más información acerca de este escenario de ejemplo, vea Sales Orders Sample Scenario.

Lenguajes

  • C#
  • Transact-SQL

Características

El ejemplo Sales Orders muestra las siguientes características de la réplica de mezcla:

  • Objetos de administración de réplica (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
  • Suscriptores a SQL Server Compact Edition y Express Edition
  • Administración automática del intervalo de identidades
  • Controladores de lógica de negocios
  • Sincronización Web (opcional)

Para obtener más información sobre la forma en que estas características de réplica se muestran en el ejemplo, vea Sales Orders Sample Implementation Details.

Requisitos previos

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

  • Service Pack 1 (SP1) de SQL Server 2005, incluidos los siguientes componentes de instalación opcional:

    • Servicios de base de datos de SQL Server (incluso réplica)
    • Componentes de conectividad de cliente
    • Modelos de programación
    • Herramientas de desarrollo (incluso SDK)
    • Base de datos OLTP de ejemplo AdventureWorks. Esta base de datos de ejemplo está incluida en SQL Server 2005 y también está disponible en el Centro para programadores de SQL Server.
    • Los ejemplos del SQL Server 2005. Estos ejemplos están incluidos en SQL Server 2005 y también están disponibles en el Centro para programadores de SQL Server. Para obtener más información, vea Instalar ejemplos.
  • .NET Framework SDK 2.0 o Microsoft Visual Studio 2005. Puede obtener .NET Framework SDK gratuitamente. Para obtener más información, vea Instalar .NET Framework SDK.

    [!NOTA] Para generar la instantánea inicial, debe aplicar el SP1 de SQL Server 2005 en el publicador. Para utilizar este ejemplo en un publicador de SQL Server 2005 sin el SP1 instalado, primero debe quitar y volver a crear la restricción FOREIGN KEY FK_SalesOrderDetail_SalesOrderHeader_SalesOrderID en la tabla SalesOrderHeader sin la cláusula ON DELETE CASCADE.

Permisos necesarios

Los permisos necesarios para configurar y ejecutar el ejemplo Sales Orders se basan en las necesidades de seguridad de réplica y son los siguientes:

  • Para ejecutar InstallSalesOrdersSample.bat, que configura la réplica, 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 réplica, incluida la creación de la base de datos AdventureWorksLocal, 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.

    [!NOTA] Cuando la base de datos local y la suscripción existen, la cuenta de Windows debe ser por lo menos un miembro de la función fija de base de datos db_owner de la base de datos AdventureWorksLocal en el suscriptor para ejecutar la aplicación.

  • 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 de la publicación (PAL) AdvWorksSalesOrders.

Generar y configurar el ejemplo

Para generar el proyecto de ejemplo y configurar la topología de réplica, debe hacer lo siguiente:

  • En el publicador, ejecute la secuencia de comandos de instalación de réplica.
  • (Opcional) Configure el servidor de Servicios de Internet Information Server (IIS) para admitir la sincronización Web para la réplica 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\90\COM. Al usar sincronización Web, también debe colocar una copia de BusinessLogic.dll en el directorio C:\Archivos de programa\Microsoft SQL Server\90\COM en el servidor Web.

Para configurar el ejemplo Sales Orders en el publicador

  1. Asegúrese de que la base de datos del ejemplo AdventureWorks se haya instalado y que la base de datos se encuentre anexada. Si la base de datos no se anexa, vea Instalar ejemplos y bases de datos de ejemplo AdventureWorks en los Libros en pantalla de SQL Server.

  2. Asegúrese de que se hayan instalado los ejemplos del motor de base de datos de SQL Server.

    Para obtener más información, vea Instalar ejemplos.

  3. 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.

  4. Vaya a la ubicación de instalación de las secuencias de comandos del ejemplo Sales Orders. La ubicación predeterminada es C:\Archivos de programa\Microsoft SQL Server\90\Samples\Replication\Merge\SalesOrders\Scripts.

  5. (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 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.

  6. 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 réplica 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.

  7. (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 Cómo configurar IIS para la sincronización Web.

  8. 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 réplica. Para obtener información acerca del uso del Monitor de réplica para ver el estado de un trabajo del Agente de instantáneas, vea el tema Cómo ver información y realizar tareas para los agentes asociados con una publicación (Monitor de réplica) en los Libros en pantalla de SQL Server.

Para generar y configurar el ejemplo Sales Orders en el suscriptor

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

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

    sn -k SampleKey.snk

    [!NOTA] Puede omitir este paso si esta clave se creó anteriormente para usarse en otro ejemplo.

  3. Vaya a la ubicación de instalación de la solución de ejemplo Sales Orders en Microsoft Visual C#. La ubicación predeterminada es C:\Archivos de programa\Microsoft SQL Server\90\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.

    [!NOTA] La réplica no admite localhost para nombres de servidor.

  7. Coloque una copia del ensamblado BusinessLogic.dll en el directorio C:\Archivos de programa\Microsoft SQL Server\90\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\90\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 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 hacerlo, conéctese al servidor Web en el modo de diagnóstico siguiendo las instrucciones de configuración de certificados de cliente en el suscriptor que se indican en How to: Configure Web Synchronization for Merge Replication (Replication Transact-SQL Programming).

    [!NOTA] Si se produce un error de HTTP al utilizar la sincronización Web, abra Internet Explorer y, en el menú Herramientas, seleccione Opciones de Internet, Conexiones y Configuración de LAN. Asegúrese de que Detectar la configuración automáticamente esté deshabilitado.

  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 suscripción 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.
    • 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.

    [!NOTA] La característica Synchronize When Connected no está disponible cuando se ejecuta en plataformas Microsoft . Para obtener más información, vea Sales Orders Sample Implementation Details.

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.

      [!NOTA] La sincronización de sólo carga o de sólo descarga no es compatible con la sincronización Web. Cuando la sincronización Web está habilitada, el elemento de menú Only Upload Data está deshabilitado.

    • (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 la siguiente secuencia de comandos Transact-SQL para eliminar la suscripción de extracción.

    -- This batch is executed at the Subscriber to remove 
    -- the Sales Orders sample subscription.
    DECLARE @publisher AS sysname;
    
    -- change this value to the name of the Publisher server.
    SET @publisher = N'PUBSERVER'; 
    
    USE [AdventureWorksLocal]
    EXEC sp_dropmergepullsubscription 
      @publisher = @publisher, 
      @publisher_db = N'AdventureWorks',
      @publication = N'AdvWorksSalesOrders';
    GO
    
  2. En el publicador, ejecute la siguiente secuencia de comandos Transact-SQL para eliminar del registro la suscripción de extracción.

    -- This batch is executed at the Publisher to remove 
    -- the Sales Orders sample subscription.
    DECLARE @subscriber AS sysname;
    
    -- change this value to the name of the Subscriber server.
    SET @subscriber = N'SUBSERVER'; 
    
    USE [AdventureWorks]
    EXEC sp_dropmergesubscription 
      @publication = N'AdvWorksSalesOrders', 
      @subscriber = @subscriber, 
      @subscriber_db = N'AdventureWorksLocal';
    GO
    

Para eliminar el ejemplo Sales Orders

  1. En el publicador, vaya a la ubicación de instalación de las secuencias de comandos del ejemplo Sales Orders. La ubicación predeterminada es C:\Archivos de programa\Microsoft SQL Server\90\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 réplica del publicador, eliminar todos los objetos de réplica de la base de datos de suscripciones y desinstalar la publicación y distribución del publicador.

    ms160955.note(es-es,SQL.90).gifImportante:
    Al usar esta secuencia de comandos, se eliminará toda la infraestructura de réplica. Si ha creado otras publicaciones que usan este publicador o distribuidor, no ejecute DropAdvWorksSalesOrdersPublication.sql. En lugar de ello, debe eliminar la publicación AdvWorksSalesOrders manualmente. Para obtener más información, vea Cómo eliminar una publicación (SQL Server Management Studio) o How to: Delete a Publication (Replication Transact-SQL Programming) en los Libros en pantalla de SQL Server.
  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 master y ejecute DROP DATABASE AdventureWorksLocal.

Comentarios

Los ejemplos se proporcionan exclusivamente con fines formativos. No se han diseñado para utilizarse en un entorno de producción y no se han probado en ningún entorno de este tipo. Microsoft no ofrece soporte técnico para estos ejemplos. Las aplicaciones y los ensamblados de ejemplo no se deben conectar ni usar con la base de datos de SQL Server de producción ni con el servidor de informes sin el permiso del administrador del sistema.

Vea también

Conceptos

Ejemplos de réplica

Otros recursos

Planning for Replication Programming
Centro de información del programador de réplica

Ayuda e información

Obtener ayuda sobre SQL Server 2005

Historial de cambios

Versión Historial

14 de abril de 2006

Contenido modificado:
  • Se actualizaron los requisitos del SP1 de SQL Server 2005.
  • Se agregó una nota con información acerca de cómo ejecutar el ejemplo en un publicador de SQL Server 2005.

5 de diciembre de 2005

Contenido modificado:
  • Se actualizaron los pasos de implementación.
  • Se actualizó la información de implementación y creación de claves para reflejar las actualizaciones de los ejemplos.