Activation des niveaux d'isolement selon le versioning de ligne

Les administrateurs de bases de données déterminent les paramètres de versioning de ligne définis au niveau de la base de données à l'aide des options de base de données READ_COMMITTED_SNAPSHOT et ALLOW_SNAPSHOT_ISOLATION de l'instruction ALTER DATABASE.

Lorsque l'option de base de données READ_COMMITTED_SNAPSHOT est activée (ON), les mécanismes de prise en charge de l'option sont immédiatement activés. Lors du paramétrage de l'option READ_COMMITTED_SNAPSHOT, seule la connexion exécutant la commande ALTER DATABASE est autorisée dans la base de données. La base de données ne peut contenir aucune autre connexion ouverte avant la fin de l'exécution de la commande ALTER DATABASE. Il n'est pas nécessaire que la base de données soit en mode mono-utilisateur.

L'instruction Transact-SQL suivante permet la prise en charge de l'option READ_COMMITTED_SNAPSHOT :

ALTER DATABASE AdventureWorks
    SET READ_COMMITTED_SNAPSHOT ON;

Lorsque l'option de base de données ALLOW_SNAPSHOT_ISOLATION est activée (ON), l'instance du Moteur de base de données SQL Server de Microsoft ne génère le versioning de ligne pour les données modifiées que lorsque l'exécution de toutes les transactions actives modifiant les données de la base de données est terminée. En cas de transactions de modification actives, SQL Server affecte à l'option l'état PENDING_ON. Une fois l'exécution des transactions de modification terminées, l'état de l'option passe sur ON. Les utilisateurs ne peuvent lancer une transaction de capture instantanée que quand l'option a la valeur ON. La base de données passe par l'état PENDING_OFF lorsque son administrateur affecte à l'option ALLOW_SNAPSHOT_ISOLATION la valeur OFF.

L'instruction Transact-SQL suivante permet la prise en charge de l'option ALLOW_SNAPSHOT_ISOLATION :

ALTER DATABASE AdventureWorks
    SET ALLOW_SNAPSHOT_ISOLATION ON;

Le tableau suivant répertorie et décrit les différents états de l'option ALLOW_SNAPSHOT_ISOLATION. L'utilisation de la commande ALTER DATABASE avec l'option ALLOW_SNAPSHOT_ISOLATION ne bloque pas les utilisateurs qui sont en cours d'accès aux données de la base de données.

État de l'infrastructure d'isolement de capture instantanée pour la base de données actuelle

Description

OFF

La prise en charge des transactions d'isolement de capture instantanée n'est pas activée. Aucune transaction d'isolement de capture n'est autorisée.

PENDING_ON

La prise en charge des transactions d'isolement de capture instantanée est en état de transition (de OFF à ON). L'exécution de toutes les transactions ouvertes doit être terminée.

Aucune transaction d'isolement de capture n'est autorisée.

ON

La prise en charge des transactions d'isolement de capture instantanée est activée.

Les transactions d'isolement de capture sont autorisées.

PENDING_OFF

La prise en charge des transactions d'isolement de capture instantanée est en état de transition (de ON à OFF).

Les transactions de capture lancées dès ce moment ne peuvent accéder à la base de données. Les transactions de mise à jour assument la responsabilité du versioning dans la base de données. Les transactions de capture existantes peuvent toujours accéder à la base de données sans aucun problème. L'état PENDING_OFF ne passe sur OFF qu'à la fin de l'exécution de toutes les transactions de capture activées lorsque l'état d'isolement de capture de la base de données correspondait à ON.

Utilisez l'affichage catalogue sys.databases pour déterminer l'état des deux options de versioning de ligne de la base de données.

Toutes les mises à jour des tables utilisateur et de certaines tables système stockées dans les tables de données master et msdb génère le versioning de ligne.

L'option ALLOW_SNAPSHOT_ISOLATION est automatiquement activée (ON) dans les bases de données master et msdb. Elle ne peut être désactivée.

Les bases de données master, tempdb et msdb ne permettent pas aux utilisateurs d'affecter à l'option READ_COMMITED_SNAPSHOT la valeur ON.