Utilisation du niveau d'isolement de capture instantanée

Dans SQL Server 2005, un nouveau niveau d'isolement de « capture instantanée » a été introduit pour améliorer la concurrence pour les applications de traitement transactionnel en ligne (OLTP). Dans les versions antérieures à SQL Server, la concurrence était uniquement basée sur le verrouillage, ce qui pouvait provoquer des problèmes de blocage pour certaines applications. Le niveau d'isolement de capture instantanée, qui dépend des améliorations apportées à la version de ligne, est conçu pour améliorer les performances en évitant les scénarios de blocage du lecteur/enregistreur.

Les transactions qui démarrent avec un niveau d'isolement de capture instantanée lisent une capture instantanée de base de données au moment du démarrage de la transaction. Entre autres conséquences, lorsque vous ouvrez des curseurs de jeu de clés, dynamiques et côté serveur statiques dans un contexte de transaction de capture instantanée, ceux-ci se comportent de manière comparable à des curseurs statiques ouverts dans des transactions sérialisables. Toutefois, lorsque les curseurs sont ouverts avec un niveau d'isolement de capture instantanée, les verrous ne sont pas pris, ce qui peut réduire le blocage sur le serveur.

Pour plus d'informations sur la prise en charge de SQL Server en matière de niveau d'isolement de capture instantanée, consultez Présentation des niveaux d'isolement basés sur le versioning de ligne.

Fournisseur OLE DB de SQL Server Native Client

Le fournisseur OLE DB de SQL Server Native Client offre des améliorations qui tirent parti du niveau d'isolement de capture instantanée introduit dans SQL Server 2005. Ces améliorations incluent des modifications aux jeux de propriétés DBPROPSET_DATASOURCEINFO et DBPROPSET_SESSION.

DBPROPSET_DATASOURCEINFO

Le jeu de propriétés DBPROPSET_DATASOURCEINFO a été modifié pour indiquer que le niveau d'isolement de capture instantanée est pris en charge par l'ajout de la valeur DBPROPVAL_TI_SNAPSHOT utilisée dans la propriété DBPROP_SUPPORTEDTXNISOLEVELS. Cette nouvelle valeur indique que le niveau d'isolement de capture instantanée est pris en charge, que le versioning ait été activé sur la base de données ou non. Voici une liste des valeurs DBPROP_SUPPORTEDTXNISOLEVELS :

ID de propriété

Description

DBPROP_SUPPORTEDTXNISOLEVELS

Type : VT_I4

L/E : lecture seule

Description : masque de bits spécifiant les niveaux d'isolation de la transaction pris en charge. Combinaison de zéro ou plusieurs des éléments suivants :

  • 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

Le jeu de propriétés DBPROPSET_SESSION a été modifié pour indiquer que le niveau d'isolement de capture instantanée est pris en charge par l'ajout de la valeur DBPROPVAL_TI_SNAPSHOT utilisée dans la propriété DBPROP_SESS_AUTOCOMMITISOLEVELS. Cette nouvelle valeur indique que le niveau d'isolement de capture instantanée est pris en charge, que le versioning ait été activé sur la base de données ou non. Voici une liste des valeurs DBPROP_SESS_AUTOCOMMITISOLEVELS :

ID de propriété

Description

DBPROP_SESS_AUTOCOMMITISOLEVELS

Type : VT_I4

L/E : lecture seule

Description : spécifie un masque de bits qui indique le niveau d'isolation de la transaction lorsqu'elle se trouve en mode de validation automatique. Les valeurs pouvant être définies dans ce masque de bits sont les mêmes que celles qui peuvent être définies pour DBPROP_SUPPORTEDTXNISOLEVELS.

[!REMARQUE]

Les erreurs DB_S_ERRORSOCCURRED ou DB_E_ERRORSOCCURRED se produisent si DBPROPVAL_TI_SNAPSHOT est défini dans le cadre de l'utilisation de versions de SQL Server antérieures à SQL Server 2005.

Pour plus d'informations sur la prise en charge du niveau d'isolement de capture instantanée dans les transactions, consultez Prise en charge des transactions locales.

Pilote ODBC de SQL Server Native Client

Le pilote ODBC de SQL Server Native Client prend en charge le niveau d'isolement de capture instantanée par le biais d'améliorations apportées aux fonctions SQLSetConnectAttr et SQLGetInfo.

SQLGetConnectAttr

La fonction SQLSetConnectAttr prend désormais en charge l'utilisation de l'attribut SQL_COPT_SS_TXN_ISOLATION. L'attribution de la valeur SQL_TXN_SS_SNAPSHOT à SQL_COPT_SS_TXN_ISOLATION indique que la transaction aura lieu avec le niveau d'isolement de capture instantanée.

SQLGetInfo

La fonction SQLGetInfo prend désormais en charge la valeur SQL_TXN_SS_SNAPSHOT qui a été ajoutée au type d'information SQL_TXN_ISOLATION_OPTION.

Pour plus d'informations sur la prise en charge du niveau d'isolement de capture instantanée dans les transactions, consultez Niveau d'isolation des transactions de curseur.