Paramètres Transact-SQL et modes d'opération de mise en miroir de bases de données

Cette rubrique traite de l'opération portant sur une session de mise en miroir d'une base de données, d'un point de vue des paramètres inclus dans la clause ALTER DATABASE et des états de la base de données mise en miroir ainsi que du témoin. Cette rubrique est destinée aux utilisateurs chargés de mettre en miroir la base de données prioritairement ou exclusivement à l'aide de Transact-SQL plutôt que MicrosoftSQL Server Management Studio. Si vous n'êtes pas familiarisé avec les modes d'opération, consultez Sessions de mise en miroir de bases de données.

[!REMARQUE]

Au lieu d'utiliser Transact-SQL, vous pouvez aussi contrôler le mode d'opération d'une session dans l'Explorateur d'objets à travers la page Mise en miroir se trouvant dans la boîte de dialogue Propriétés de la base de données. Pour plus d'informations, consultez Procédure : configurer une session de mise en miroir de bases de données (SQL Server Management Studio).

Comment la sécurité liée aux transactions et l'état du témoin affectent le mode d'opération

Le mode d'opération d'une session est déterminé par la combinaison entre le paramètre relatif à la sécurité des transactions et l'état du témoin. Le propriétaire de la base de données peut à tout moment modifier le niveau de sécurité des transactions et ajouter ou supprimer le témoin.

Sécurité liée aux transactions

La sécurité des transactions est une propriété de base de données spécifique de la mise en miroir qui permet de déterminer si une session de mise en miroir de bases de données opère de manière synchrone ou asynchrone. Il existe deux niveaux de sécurité : FULL (complète) et OFF (désactivée).

  • SAFETY FULL

    La sécurité de transactions complète entraîne le mode d'opération asynchrone de la session, en mode haute sécurité. En présence d'un témoin, une session prend en charge le basculement automatique.

    Lorsque vous créez une session à l'aide des instructions ALTER DATABASE, la session démarre avec le paramètre SAFETY défini à FULL, ce qui signifie qu'elle débute en mode haute sécurité. Après démarrage de la session, vous pouvez ajouter un témoin.

    Pour plus d'informations, consultez Mise en miroir synchrone de bases de données (mode Haute sécurité).

  • SAFETY OFF

    Désactiver la sécurité des transactions entraîne le mode d'opération asynchrone de la session, en mode hautes performances. Si la propriété SAFETY est définie à OFF, la propriété WITNESS doit également être définie sur cette valeur (valeur par défaut). Pour obtenir des informations sur l'impact du témoin en mode hautes performances, consultez la section « État du témoin » plus loin dans cette rubrique. Pour plus d'informations sur l'exécution après désactivation de la sécurité des transactions, consultez Mise en miroir asynchrone de bases de données (mode hautes performances).

Le paramètre de sécurité des transactions de la base de donnnées est enregistré pour chaque partenaire dans l'affichage catalogue sys.database_mirroring au niveau des colonnes mirroring_safety_level et mirroring_safety_level_desc. Pour plus d'informations, consultez sys.database_mirroring (Transact-SQL).

Le propriétaire de la base de données peut modifier le niveau de sécurité des transactions à tout moment.

État du témoin

Si un témoin a été défini, I'utilisation d'un quorum justifiant en permanence l'importance du témoin est nécessaire.

S'il existe, le témoin affiche l'un des deux états suivants :

  • Lorsque le témoin est connecté à un partenaire, il apparaît à l'état CONNECTED (connecté) par rapport au partenaire et possède un quorum avec ce dernier. Dans ce cas, la base de données peut être mise à disposition même si l'un des partenaires n'est pas disponible.

  • Lorsque le témoin existe mais n'est pas connecté à un partenaire, il apparaît à l'état UNKNOWN (inconnu) ou DISCONNECTED (déconnecté) par rapport au partenaire. Dans ce cas, le témoin ne dispose d'aucun quorum avec ce partenaire et la base de données devient indisponible si les partenaires ne sont pas connectés entre eux.

Pour plus d'informations sur les quorums, consultez Quorum : effets d'un témoin sur la disponibilité de la base de données.

L'état de chaque témoin d'une instance de serveur est enregistré dans l'affichage catalogue sys.database_mirroring au niveau des colonnes mirroring_witness_state et mirroring_witness_state_desc. Pour plus d'informations, consultez sys.database_mirroring (Transact-SQL).

Le tableau suivant répertorie le mode d'opération d'une session dépendant de son paramètre relatif à la sécurité des transactions et de l'état du témoin.

Mode d'opération

Sécurité des transactions

État du serveur

Mode hautes performances

OFF

NULL (pas de témoin)2

Mode haute sécurité sans basculement automatique

FULL

NULL (pas de témoin)

Mode haute sécurité avec basculement automatique1

FULL

CONNECTED

1 Si le témoin est déconnecté, nous vous recommandons de définir la propriété WITNESS à OFF jusqu'à ce que l'instance de serveur témoin devienne disponible.

2 Si un témoin est présent en mode hautes performances, il ne participe pas à la session. Cependant, pour rendre la base de données disponible, deux au moins des instances du serveur doivent rester connectées. Par conséquent, nous vous recommandons de conserver la propriété WITNESS défini à OFF dans les sessions en mode hautes performances. Pour plus d'informations, consultez Quorum : effets d'un témoin sur la disponibilité de la base de données.

Affichage du paramètre de sécurité et de l'état du témoin

Pour afficher le paramètre de sécurité et l'état du témoin d'une base de données, utilisez l'affichage catalogue sys.database_mirroring. Les colonnes les plus pertinentes sont les suivantes :

Factor

Columns

Description

Sécurité des transactions

mirroring_safety_level ou mirroring_safety_level_desc

Paramètre de sécurité des transactions pour les mises à jour de la base de données en miroir pouvant être défini sur l'une des valeurs suivantes :

UNKNOWN

OFF

FULL

NULL : la base de données n'est pas en ligne.

Un témoin existe-t-il ?

mirroring_witness_name

Nom de serveur du témoin mis en miroir de la base de données ou mention NULL, indiquant que le témoin n'existe pas.

État du serveur

mirroring_witness_state ou mirroring_witness_state_desc

État du témoin dans la base de données d'un partenaire donné :

UNKNOWN

CONNECTED

DISCONNECTED

NULL : aucun témoin n'existe ou la base de données n'est pas en ligne.

Par exemple, saisissez sur le serveur principal ou sur le serveur miroir :

SELECT mirroring_safety_level_desc, mirroring_witness_name, mirroring_witness_state_desc FROM sys.database_mirroring

Pour plus d'informations sur cet affichage catalogue, consultez sys.database_mirroring (Transact-SQL).

Facteurs influant sur le comportement provoqué par la perte du serveur principal

Le tableau suivant répertorie l'effet combiné du paramètre de sécurité propre aux transactions, de l'état de la base de données et de l'état du témoin sur le comportement adopté par une session de mise en miroir lors de la perte du serveur principal.

Sécurité des transactions

État de la mise en miroir d'une base de données miroir

État du serveur

Comportement lors de la perte de la connexion au serveur principal

FULL

SYNCHRONIZED

CONNECTED

Basculement automatique.

FULL

SYNCHRONIZED

DISCONNECTED

Le serveur miroir s'arrête, le basculement est alors impossible et la base de données n'est plus disponible.

OFF

SUSPENDED ou DISCONNECTED

NULL (pas de témoin)

Le service peut être forcé sur le serveur miroir (perte de données possible).

FULL

SYNCHRONIZING ou SUSPENDED

NULL (pas de témoin)

Le service peut être forcé sur le serveur miroir (perte de données possible).