Compartir por


Descripción del control de la simultaneidad

Descargar controlador JDBC

El control de la simultaneidad se refiere a las diversas técnicas que se utilizan para conservar la integridad de la base de datos cuando varios usuarios actualizan filas al mismo tiempo. Una simultaneidad incorrecta puede causar problemas, como la lectura de datos sucios, las lecturas fantasmas y las lecturas no repetibles. El Microsoft JDBC Driver para SQL Server proporciona interfaces para todas las técnicas de simultaneidad que SQL Server emplea para resolver estos problemas.

Nota

Para obtener más información sobre la simultaneidad de SQL Server, vea Administrar el acceso simultáneo a datos.

Observaciones

El controlador JDBC es compatible con los tipos de simultaneidad siguientes:

Tipo de simultaneidad Características Bloqueos de fila Descripción
CONCUR_READ_ONLY Solo lectura No No se permiten las actualizaciones a través del cursor y no se mantienen los bloqueos en las filas que forman el conjunto de resultados.
CONCUR_UPDATABLE Lectura-escritura optimista No La base de datos supone que la contención de la fila es improbable, pero posible. La integridad de las filas se comprueba con una comparación de la marca de tiempo.
CONCUR_SS_SCROLL_LOCKS Lectura-escritura pesimista La base de datos supone que la contención de la fila es probable. La integridad de la fila se garantiza con el bloqueo de filas.
CONCUR_SS_OPTIMISTIC_CC Lectura-escritura optimista No La base de datos supone que la contención de la fila es improbable, pero posible. La integridad de las filas se comprueba con una comparación de la marca de tiempo.

En SQL Server 2005 (9.x) y versiones posteriores, el servidor cambiará esto por CONCUR_SS_OPTIMISTIC_CCVAL si la tabla no contiene una columna de marca de tiempo.

En SQL Server 2000 (8.x), si la tabla subyacente tiene una columna de marca de tiempo, se utiliza OPTIMISTIC WITH ROW VERSIONING incluso si se especifica OPTIMISTIC WITH VALUES. Si se especifica OPTIMISTIC WITH ROW VERSIONING y la tabla no incluye marcas de tiempo, se utiliza OPTIMISTIC WITH VALUES.
CONCUR_SS_OPTIMISTIC_CCVAL Lectura-escritura optimista No La base de datos supone que la contención de la fila es improbable, pero posible. La integridad de las filas se comprueba con una comparación de los datos de las filas.

Conjuntos de resultados que no son actualizables

Un conjunto de resultados actualizable es aquel en el que las filas se pueden insertar, actualizar y eliminar. En los casos siguientes, SQL Server no puede crear un cursor actualizable. La excepción que se genera es: "El conjunto de resultados no es actualizable".

Causa Descripción Solución
La instrucción no se crea con la sintaxis de JDBC 2.0 (o versiones posteriores) JDBC 2.0 introdujo métodos nuevos para crear instrucciones. Si se usa la sintaxis de JDBC 1.0, el conjunto de resultados se establece de forma predeterminada como de solo lectura. Especifique el tipo del conjunto de resultados y la simultaneidad al crear la instrucción.
La instrucción se crea con TYPE_SCROLL_INSENSITIVE SQL Server crea un cursor de instantánea estático. Se desconecta de las filas de la tabla subyacente para ayudar a proteger el cursor de las actualizaciones de filas de otros usuarios. Use TYPE_SCROLL_SENSITIVE, TYPE_SS_SCROLL_KEYSET, TYPE_SS_SCROLL_DYNAMIC o TYPE_FORWARD_ONLY con CONCUR_UPDATABLE para evitar crear un cursor estático.
El diseño de la tabla imposibilita el uso de un cursor KEYSET o DYNAMIC La tabla subyacente no tiene claves únicas para habilitar SQL Server para que identifique de forma única una fila. Agregue claves únicas a la tabla para permitir la identificación exclusiva de cada fila.

Consulte también

Administración de conjuntos de resultados con el controlador JDBC