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 AdventureWorks2008R2
    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 d'instantané 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 AdventureWorks2008R2
    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 d'instantané pour la base de données actuelle

Description

OFF

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

PENDING_ON

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

Aucune transaction d'isolement d'instantané n'est autorisée.

ON

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

Les transactions d'isolement d'instantané sont autorisées.

PENDING_OFF

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

Les transactions d'instantané 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 d'instantané 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 d'instantané activées lorsque l'état d'isolement d'instantané 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èrent 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.