Share via


RDA y acceso multiusuario

En Microsoft SQL Server Compact 3.5 (SQL Server Compact 3.5), el acceso multiusuario está disponible en todo momento, incluso cuando se utiliza el acceso a datos remotos (RDA). Se puede estar realizando una acción de extracción o inserción mientras otro usuario obtiene acceso a la misma base de datos de SQL Server Compact 3.5.

La operación de extracción requiere que la tabla local concreta no esté presente en el momento de la extracción y la tabla se crea durante el proceso de extracción de datos del servidor, por lo que no es posible obtener acceso a la tabla que se está extrayendo antes de que se complete la operación de extracción. Si una vez iniciada la inserción de datos en el servidor se producen cambios en los mismos, se enviarán esos cambios al servidor en la próxima operación de inserción. Si es necesario actualizar los datos del servidor después de realizar una determinada inserción de datos en el servidor, la aplicación no permitirá realizar otros cambios en la tabla antes de que se completen las operaciones de extracción e inserción. De este modo se garantiza que los cambios no se perderán cuando se elimine la tabla.

La posibilidad de que varias conexiones puedan obtener acceso a una base de datos de SQL Server Compact 3.5 ofrece a los programadores un modelo más sencillo de desarrollo. El motor de base de datos de SQL Server Compact 3.5 controla las solicitudes de varias aplicaciones o varias solicitudes de conexión de una sola aplicación, con lo que se evita que los programadores tengan que planificar el acceso a las bases de datos. Cuando se requieren varias conexiones, el motor de base de datos de SQL Server Compact 3.5 bloquea los datos según sea necesario en cada operación.

Nota

Algunos escenarios de la plataforma de 64 bits no admiten el acceso simultáneo a un archivo de base de datos con las versiones anteriores de SQL Server Compact. Para obtener información acerca de los componentes de 64 bits, vea Administrar las aplicaciones de base de datos de 64 bits.

Cambiar la clave principal durante la sincronización

En el caso de una tabla en la que se ha hecho un seguimiento mediante RDA, el seguimiento de las actualizaciones, inserciones y eliminaciones se basa en la clave principal. Es importante no cambiar los valores de la columna de claves principales durante las sincronizaciones puesto que varios usuarios pueden obtener acceso a las mismas.

Advertencia   Aunque no es habitual cambiar un valor de las columnas de claves principales, si esto ocurre durante la sincronización de una tabla en la que se ha cambiado la clave principal, puede producirse un error y la pérdida de datos.

Ejemplo

En la Tabla A, el valor de la clave principal ha cambiado de 1 a 2. El valor 1 se ha almacenado en una columna de seguimiento utilizada por RDA, de manera que cuando se produzca una inserción SQL Server Compact 3.5 sepa qué valor debe utilizar para los criterios de búsqueda al actualizar los datos con el nuevo valor.

La aplicación inicia la operación de inserción y el nuevo valor 2 se envía en el mensaje de carga a la base de datos de SQL Server con el valor de búsqueda 1. Sin embargo, si se cambia el valor de los nuevos datos durante la sincronización, la columna de seguimiento no cambiará su valor de búsqueda de 1 a 2 porque la inserción todavía no se ha completado. Cuando finalice correctamente la inserción, la siguiente inserción de esta fila producirá un error. Los criterios de búsqueda de 1 dejarán de ser válidos porque se ha cambiado el valor de la clave principal de 1 a 2 en el servidor.

Para obtener más información acerca del acceso multiusuario, vea Acceso multiusuario. Para obtener más información acerca del bloqueo, vea Bloquear (SQL Server Compact).