Compartir a través de


Trabajar con aislamiento de instantánea

SQL Server 2005 introdujo un nuevo nivel de aislamiento de "instantánea" destinado a mejorar la simultaneidad para las aplicaciones de procesamiento de transacciones en línea (OLTP). En versiones anteriores de SQL Server, la simultaneidad se basada únicamente en el bloqueo, lo que podía provocar problemas de bloqueo e interbloqueo en algunas aplicaciones. El aislamiento de instantánea depende de las mejoras de las versiones de fila y está pensado para mejorar el rendimiento evitando situaciones de bloqueo de lectura-escritura.

Las transacciones que se inician bajo el aislamiento de instantánea leen una instantánea de la base de datos realizada al comenzar la transacción. Un resultado de esta acción es que los cursores estáticos, dinámicos y controlados por conjunto de claves, al abrirse dentro de un contexto de transacciones de instantánea, actúan de forma muy similar a los cursores estáticos que se abren desde transacciones serializables. Sin embargo, cuando los cursores se abren bajo el nivel de aislamiento de instantánea no se toman bloqueos, lo que puede reducir el bloqueo en el servidor.

Proveedor OLE DB de SQL Server Native Client

El proveedor OLE DB de SQL Server Native Client tiene mejoras que aprovechan el aislamiento de instantánea introducido en SQL Server 2005. Estas mejoras incluyen cambios en los conjuntos de propiedades DBPROPSET_SESSION y DBPROPSET_DATASOURCEINFO.

DBPROPSET_DATASOURCEINFO

El conjunto de propiedades DBPROPSET_DATASOURCEINFO ha cambiado para indicar que se admite el nivel de aislamiento de instantánea mediante la adición del valor DBPROPVAL_TI_SNAPSHOT que se utiliza en la propiedad DBPROP_SUPPORTEDTXNISOLEVELS. Este nuevo valor indica que se admite el nivel del aislamiento de instantánea independientemente de que se haya habilitado o no el control de versiones en la base de datos. A continuación se incluye una lista de los valores de DBPROP_SUPPORTEDTXNISOLEVELS:

Id. de propiedad Descripción
DBPROP_SUPPORTEDTXNISOLEVELS Tipo: VT_I4

L/E: de solo lectura

Descripción: una máscara de bits que especifica los niveles de aislamiento de transacción admitidos. Combinación de cero o más de los siguientes elementos:

- DBPROPVAL_TI_CHAOS
- DBPROPVAL_TI_READUNCOMMITTED
- DBPROPVAL_TI_BROWSE
- DBPROPVAL_TI_CURSORSTABILITY
- DBPROPVAL_TI_READCOMMITTED
- DBPROPVAL_TI_REPEATABLEREAD
- DBPROPVAL_TI_SERIALIZABLE
- DBPROPVAL_TI_ISOLATED
- DBPROPVAL_TI_SNAPSHOT

DBPROPSET_SESSION

El conjunto de propiedades DBPROPSET_SESSION ha cambiado para indicar que se admite el nivel de aislamiento de instantánea mediante la adición del valor DBPROPVAL_TI_SNAPSHOT que se utiliza en la propiedad DBPROP_SESS_AUTOCOMMITISOLEVELS. Este nuevo valor indica que se admite el nivel del aislamiento de instantánea independientemente de que se haya habilitado o no el control de versiones en la base de datos. A continuación se incluye una lista de los valores de DBPROP_SESS_AUTOCOMMITISOLEVELS:

Id. de propiedad Descripción
DBPROP_SESS_AUTOCOMMITISOLEVELS Tipo: VT_I4

L/E: de solo lectura

Descripción: especifica una máscara de bits que indica el nivel de aislamiento de transacción mientras está activo el modo de confirmación automática. Los valores que se pueden establecer en esta máscara de bits son iguales a los que se pueden establecer para DBPROP_SUPPORTEDTXNISOLEVELS.

Nota

Los errores DB_S_ERRORSOCCURRED o DB_E_ERRORSOCCURRED se producirán si se establece DBPROPVAL_TI_SNAPSHOT al usar versiones de SQL Server anteriores a SQL Server 2005.

Para más información sobre cómo se admite el aislamiento de instantánea en transacciones, consulte Compatibilidad con transacciones locales.

Controlador ODBC de SQL Server Native Client

El controlador ODBC SQL Server Native Client proporciona compatibilidad con el aislamiento de instantáneas a pesar de las mejoras realizadas en las funciones SQLSetConnectAttr y SQLGetInfo.

SQLSetConnectAttr

La función SQLSetConnectAttr ahora admite el uso del atributo SQL_COPT_SS_TXN_ISOLATION. Si SQL_COPT_SS_TXN_ISOLATION se establece en SQL_TXN_SS_SNAPSHOT, significa que la transacción tendrá lugar en el nivel de aislamiento de instantáneas.

SQLGetInfo

La función SQLGetInfo ahora admite el valor de SQL_TXN_SS_SNAPSHOT que se ha agregado al tipo de información de SQL_TXN_ISOLATION_OPTION.

Para obtener información sobre cómo se admite el aislamiento de instantáneas en las transacciones, consulte Nivel de aislamiento de transacción de cursor.

Consulte también

Características de SQL Server Native Client
Propiedades y comportamientos de conjuntos de filas