Cómo: Configurar la sincronización de datos en una aplicación

Si la aplicación requiere datos de una base de datos remota que no tienen que recuperarse continuamente de la base de datos (o que no siempre están disponibles), se puede usar una base de datos local para almacenar los datos en el equipo cliente con la aplicación.

Por ejemplo, considere una aplicación de inventario que usa datos de varias tablas en una base de datos. El número de elementos disponibles para cualquier artículo individual es un dato importante que cambia continuamente, por lo que la aplicación debería reflejar siempre los valores actuales en la base de datos. Sin embargo, la aplicación también muestra una lista de compañías de distribución válidas que raramente cambia. Estas compañías de distribución válidas están almacenadas en la tabla de distribuidores y no tienen que recuperarse cada vez que se necesitan datos de la base de datos. Si almacena esta tabla de distribuidores en una caché de base de datos local, se puede disminuir el número de ciclos de ida y vuelta innecesarios que la aplicación tiene que realizar a la base de datos remota. Considere la opción de almacenar los datos que cambian con poca frecuencia (o que cambian según una programación conocida) en una caché de base de datos local.

La caché de base de datos local utiliza una base de datos SQL Server Compact 3.5 para almacenar localmente los datos. Puede utilizar una base de datos de SQL Server Compact 3.5 como caché de base de datos local. Si todavía no tiene una base de datos local, puede establecer el cuadro de diálogo Configurar sincronización de datos para crear una nueva base de datos local.

Después de agregar una base de datos local a su aplicación y completar el cuadro de diálogo Configurar sincronización de datos, todavía tiene que agregar código a su aplicación para iniciar la sincronización. Después de haber sincronizado correctamente los datos, también deberá agregar código para rellenar la tabla del conjunto de datos a partir de la base de datos local.

Nota

El cuadro de diálogo Configurar sincronización de datos permite configurar Microsoft Synchronization Services for ADO.NET únicamente para escenarios de descarga. Esto significa que, después de configurar la sincronización de datos mediante el cuadro de diálogo Configurar sincronización de datos, la llamada a Microsoft.Synchronization.Data.SyncAgent.Synchronize sólo actualizará la base de datos local con los cambios que se encuentren en la base de datos remota. Los cambios realizados en los datos de la base de datos local no se cargarán en la base de datos remota. Después de configurar la sincronización de datos mediante el cuadro de diálogo Configurar sincronización de datos, puede habilitar las cargas de datos mediante programación (sincronización bidireccional) durante la sincronización. Para obtener más información, vea Cómo: Configurar una base de datos local y una base de datos remota para que exista sincronización bidireccional.

Agregar una caché de base de datos local a un proyecto

Puede configurar las aplicaciones de modo que almacenen los datos localmente en memoria caché agregando un archivo .sync a su proyecto y configurándolo mediante el cuadro de diálogo Configurar sincronización de datos. Puede agregar archivos .sync a los proyectos utilizando el cuadro de diálogo Agregar nuevo elemento.

El procedimiento siguiente proporciona los pasos básicos necesario para configurar la sincronización de datos. Para obtener ejemplos que utilizan datos reales, vea Tutorial: Crear una aplicación que se conecta ocasionalmente.

Nota

Es posible que su equipo muestre nombres o ubicaciones diferentes para algunos de los elementos de la interfaz de usuario de Visual Studio incluidos en las instrucciones siguientes. La edición de Visual Studio que se tenga y la configuración que se utilice determinan estos elementos. Para obtener más información, vea Valores de configuración de Visual Studio.

Para configurar la sincronización de datos

  1. En el menú Proyecto, haga clic en Agregar nuevo elemento.

  2. Haga clic en la plantilla Caché de base de datos local.

  3. Proporcione un nombre alternativo o mantenga el nombre predeterminado de LocalDataCache1.sync.

  4. Haga clic en Agregar.

    El archivo .sync se agrega al proyecto, y el cuadro de diálogo Configurar sincronización de datos se abre.

  5. Establezca la Conexión del servidor con la base de datos remota a la que desea conectarse.

  6. Establezca la Conexión de cliente con la base de datos de SQL Server Compact 3.5 local que almacenará sus datos localmente. Si no dispone de una base de datos local, puede dejar la configuración predeterminada de DatabaseName.sdf (nuevo) para crear una nueva base de datos en el proyecto. El nombre de la nueva base de datos se basará en el nombre de la base de datos de la Conexión del servidor.

    Nota

    El botón Aceptar se encuentra deshabilitado de forma predeterminada, y se habilitará después de agregar una tabla al área Tablas en caché.

  7. Haga clic en Agregar para abrir el cuadro de diálogo Configurar tablas para usarlas sin conexión y seleccione y configure las tablas de base de datos para agregarlas a la caché de base de datos local.

  8. Seleccione las tablas de base de datos que desee agregar a la caché de base de datos local, y configure cada uno de los valores siguientes:

    • Datos para descargar:

      Cambios nuevos e incrementales después de la primera sincronización

      Esta opción de configuración permite recuperar los registros del servidor que se han modificado desde la última vez que se sincronizaron los datos. La primera vez que se utiliza la sincronización, se descargará la tabla completa.

      Toda la tabla cada vez

      Esta opción de configuración permite desechar la tabla local y reemplazarla con la versión del servidor.

    • Comparar actualizaciones usando

      Configure esta opción con el nombre de columna de la tabla seleccionada que se utiliza para realizar un seguimiento de cuándo se hizo la última actualización de un registro. De forma predeterminada, en esta lista aparecerá cualquier columna definida como fecha y hora o marca de tiempo. Si la tabla no contiene ninguna columna que se utilice para realizar el seguimiento de los registros modificados, puede dejar la opción predeterminada de LastEditDate (nuevo), que creará automáticamente la columna de seguimiento.

    • Comparar inserciones usando

      Configure esta opción con el nombre de columna de la tabla seleccionada que se utiliza para realizar un seguimiento de cuándo se agregan nuevos registros a la tabla. De forma predeterminada, en esta lista aparecerá cualquier columna definida como fecha y hora o marca de tiempo. Si la tabla no contiene ninguna columna que se utilice para realizar el seguimiento de los nuevos registros, puede dejar la opción predeterminada de CreationDate (nuevo), que creará automáticamente la columna de seguimiento.

    • Mover elementos eliminados a

      Configure esta opción con la tabla de la base de datos del servidor que se utiliza para almacenar los registros eliminados. De forma predeterminada, cualquier tabla denominada nombreTabla_Deleted o nombreTabla_Tombstone aparecerá en esta lista. Si la base de datos no contiene una tabla para almacenar los elementos eliminados, puede dejar la opción predeterminada nombreTabla**_Tombstone (nuevo)**, que creará automáticamente la tabla de elementos eliminados.

      Nota

      Configure estos valores para cada tabla que vaya a utilizar sin conexión.

  9. De forma predeterminada, las opciones de Generación de scripts se establecen automáticamente para generar y ejecutar los scripts del servidor que se utilizan para configurar el servidor de bases de datos. Si no necesita estos scripts, o si no tiene acceso al servidor de bases de datos, puede borrar cualquier opción y ejecutar manualmente los scripts o modificar las tablas. Si no se requiere ningún cambio en el servidor, no se generará ningún script.

    Nota

    Estos scripts agregan las columnas de seguimiento en las tablas seleccionadas, crean las tablas para almacenar elementos eliminados y agregan algunos desencadenadores que deben existir para poder realizar un seguimiento de las inserciones, actualizaciones y eliminaciones en las tablas configuradas para almacenamiento en caché local.

  10. Haga clic en Aceptar.

  11. Haga clic en Mostrar ejemplo de código para abrir el cuadro de diálogo Ejemplo de código, que proporciona un fragmento de código que inicia el proceso de sincronización. Puede copiar este fragmento de código en el portapapeles e insertarlo en su programa.

  12. Opcionalmente, establezca las opciones Avanzadas.

    Las opciones Avanzadas del cuadro de diálogo Configurar sincronización de datos proporcionan valores que permiten controlar si se sincronizan las tablas independientemente o en una única transacción. Las opciones también permiten separar el código para aplicaciones con n niveles.

    1. Sincronizar tablas en una sola transacción. De forma predeterminada, esto no se comprueba, y todas las tablas se sincronizan individualmente. Si se encuentran errores, sólo se revierten los cambios para las tablas con errores. Si activa esta opción, todas las tablas se sincronizan en una única transacción. Si se encuentran errores, se revierten todos los cambios para todas las tablas.

    2. Crear componentes de sincronización. De forma predeterminada, se generan componentes de sincronización para el cliente y el servidor. Puede establecer esta opción en Sólo cliente o Sólo servidor para satisfacer los requisitos de su aplicación.

    3. Ubicación del proyecto de servidor. De forma predeterminada, los componentes de sincronización para el servidor se generarán en el proyecto actual. Establezca esta opción para generar componentes de sincronización para el servidor en cualquier proyecto de Visual Basic o Visual C# en la solución.

    4. Ubicación del proyecto de cliente. De forma predeterminada, los componentes de sincronización para el cliente se generarán en el proyecto actual. Establezca esta opción para generar componentes de sincronización para el cliente en cualquier proyecto de Visual Basic o Visual C# en la solución.

Después de completar el cuadro de diálogo Configurar sincronización de datos, deberá agregar código a su aplicación para iniciar la sincronización.

Nota

Al sincronizar los datos, se actualiza la base de datos local, no la tabla del conjunto de datos o cualquier otro objeto de su aplicación. No olvide volver a cargar el origen de datos de la aplicación con los datos actualizados de la base de datos local. Por ejemplo, realice una llamada al método TableAdapter.Fill para cargar la tabla de datos del conjunto de datos con los datos actualizados de la base de datos local.

Para iniciar la sincronización

  • Si copió el código proporcionado en el cuadro de diálogo Ejemplo de código de la sección anterior, puede pegarlo simplemente en su aplicación. De lo contrario, puede insertar el siguiente código en cualquier parte de su aplicación donde desee iniciar el proceso de sincronización:

Vea también

Tareas

Tutorial: Crear una aplicación que se conecta ocasionalmente

Tutorial: Implementar una aplicación cliente conectada ocasionalmente con la base de datos local

Conceptos

Información general sobre las aplicaciones conectadas ocasionalmente

Otros recursos

Aplicaciones conectadas ocasionalmente (almacenamiento en caché de base de datos local)