Compartir a través de


Inserción de datos del cliente en el servidor

La inserción de datos de un cliente en un servidor implica la propagación de los cambios de Microsoft SQL Server Compact 3.5 a una tabla de SQL Server. Para obtener más información, vea el método Push.

La aplicación debe haber creado la tabla local de SQL Server Compact 3.5 llamando al método Pull con la opción de seguimiento activada.

Los métodos Pull y Push con seguimiento de acceso a datos remotos (RDA) usan el control de simultaneidad optimista. SQL Server no mantiene un bloqueo sobre los registros extraídos. Cuando la aplicación llama a Push, los cambios realizados en la base de datos local de SQL Server Compact 3.5 se aplican sin condiciones a la base de datos de SQL Server. Esto puede ocasionar la pérdida de los cambios realizados por otros usuarios en la base de datos de SQL Server.

Lotes

RDA_BATCHOPTION especifica si SQL Server Compact 3.5 debe agrupar en lotes los cambios que envían a la tabla de SQL Server. El valor predeterminado es BATCHINGOFF, que hace que los cambios (insertar, actualizar y eliminar) se apliquen a la tabla de SQL Server como transacciones individuales. Ninguna transacción depende de otra para llevarse a cabo correctamente. BATCHINGON especifica que todos los cambios se envíen como una única transacción. En este caso, deben implementarse correctamente todos los cambios para que la transacción se realice de manera satisfactoria. Si se produce un error en alguno de ellos, se produce un error en toda la transacción y no se aplica ningún cambio a la tabla de SQL Server. Si bien BATCHINGON no es la opción predeterminada, es posible que algunos programadores consideren que este mecanismo resulta más fácil de usar para la creación de código de resolución de conflictos. Para obtener más información, vea Detección e informe de conflictos de RDA.

Tanto BATCHINGON como BATCHINGOFF devuelven a la tabla de errores todos los errores, no solo el primero que ocurre. Por ejemplo, si se especifica BATCHINGON y no se pueden realizar tres cambios de cinco, no se aplica ningún cambio y los tres errores se almacenan en la tabla de errores. Si se especifica BATCHINGOFF, estos tres mismos errores se almacenan en la tabla de errores y los otros dos cambios se aplican a la tabla de SQL Server.

Transacciones no procesadas por lotes

Durante las transacciones no procesadas por lotes (con la opción BATCHINGOFF), los conflictos se detectan en las filas. La fila en la que se produce el conflicto se devuelve a la aplicación y se almacena en una tabla de errores especificada. Por ejemplo, si la aplicación intenta insertar una fila que no es válida en SQL Server, esa fila se devuelve a la aplicación y se almacena en la tabla de errores junto con un mensaje de error que indica el conflicto.

Cuando una fila con un conflicto se devuelve a la tabla de errores, esa fila se quita de la base de datos original del dispositivo. Debe diseñar la aplicación de modo que permita al usuario corregir los datos con conflictos y combinarlos de nuevo en la base de datos original basada en Windows Mobile.

Transacciones por lotes

RDA también admite una inserción por lotes (con la opción BATCHINGON), en la que es obligatorio que todas las filas se procesen correctamente para completar el proceso de inserción. Si se produce algún error en una fila, se produce un error en toda la transacción de inserción y no se actualiza ningún dato. Las filas con conflictos se copian en la tabla de errores. A diferencia de la inserción no procesada por lotes, la base de datos original basada en Windows Mobile permanece intacta. Debe diseñar la aplicación de modo que permita al usuario corregir los datos con conflictos y combinarlos de nuevo en la base de datos original basada en Windows Mobile. La tabla de errores se limpia automáticamente antes de copiar una fila con conflictos, por lo que los conflictos de la última operación de inserción son los únicos que existen en la tabla.

Vea también

Otros recursos

Cómo insertar datos con el objeto RDA (mediante programación)