Ajouter un témoin de mise en miroir de bases de données à l'aide de l'authentification Windows (Transact-SQL)Add a Database Mirroring Witness Using Windows Authentication (Transact-SQL)

Pour configurer un témoin pour une base de données, le propriétaire de la base de données attribue à une instance de moteur de base de données le rôle de serveur témoin.To set up a witness for a database, the database owner assigns a Database Engine instance to the role of witness server. L'instance de serveur témoin peut être exécutée sur le même ordinateur que l'instance de serveur principal ou miroir, mais cela réduit alors considérablement la robustesse du basculement automatique.The witness server instance can run on the same computer as the principal or mirror server instance, but this substantially reduces the robustness of automatic failover.

Nous vous recommandons fortement de faire résider le témoin sur un ordinateur séparé.We strongly recommend that the witness reside on a separate computer. Un serveur donné peut participer à plusieurs sessions simultanées de mise en miroir de bases de données avec des partenaires identiques ou différents.A given server can participate in multiple concurrent database mirroring sessions with the same or different partners. Un serveur donné peut être partenaire dans certaines sessions et témoin dans d'autres.A given server can be a partner in some sessions and a witness in other sessions.

Le témoin est destiné uniquement au mode haute sécurité avec basculement automatique.The witness is intended exclusively for high-safety mode with automatic failover. Avant de définir un témoin, nous vous recommandons fortement de vérifier que la propriété SAFETY a la valeur active FULL.Before you set a witness, we strongly recommend that you ensure that the SAFETY property is currently set to FULL.

Important

Nous vous recommandons de configurer la mise en miroir de bases de données durant les heures creuses, car cela peut affecter les performances.We recommend that you configure database mirroring during off-peak hours because configuration can impact performance.

Pour établir un témoinTo establish a witness

  1. Sur l'instance de serveur témoin, assurez-vous qu'un point de terminaison existe pour la mise en miroir de bases de données.On the witness server instance, ensure that an endpoint exists for database mirroring. Quel que soit le nombre de sessions de mise en miroir à prendre en charge, l'instance de serveur ne doit disposer que d'un seul point de terminaison de mise en miroir de bases de données.Regardless of the number of mirroring session to be supported, the server instance must have only one database mirroring endpoint. Si vous voulez utiliser cette instance de serveur exclusivement comme témoin dans des sessions de mise en miroir de bases de données, attribuez le rôle de témoin au point de terminaison (ROLE=WITNESS).If you intend to use this server instance exclusively as a witness in database mirroring sessions, assign the role of witness to the endpoint (ROLE=WITNESS). Si vous souhaitez utiliser cette instance de serveur comme partenaire dans une ou plusieurs sessions de mise en miroir de bases de données, attribuez le rôle ALL au point de terminaison.If you intend to use this server instance as a partner in one or more other database mirroring sessions, assign the role of the endpoint as ALL.

    Pour exécuter une instruction SET WITNESS, la session de mise en miroir de bases de données doit déjà être démarrée (entre les partenaires) et la valeur STATE du point de terminaison du témoin doit être STARTED.To execute a SET WITNESS statement, the database mirroring session must already be started (between the partners), and the STATE of the endpoint of the witness must be set to STARTED.

    Pour savoir si l'instance de serveur témoin possède son point de terminaison de mise en miroir de bases de données et pour connaître son rôle et son état, utilisez sur cette instance l'instruction Transact-SQL suivante :To learn whether the witness server instance has its database mirroring endpoint and to learn its role and state, on that instance, use the following Transact-SQL statement:

    SELECT role_desc, state_desc FROM sys.database_mirroring_endpoints  
    

    Important

    Si le point de terminaison de mise en miroir de base de données existe et est déjà utilisé, nous vous recommandons d'utiliser ce point de terminaison pour toute session établie sur l'instance du serveur.If a database mirroring endpoint exists and is already in use, we recommend that you use that endpoint for every session on the server instance. La suppression d'un point de terminaison en cours d'utilisation perturbe les connexions des sessions existantes.Dropping an in-use endpoint disrupts the connections of the existing sessions. Si un témoin a été défini pour une session, la suppression du point de terminaison de la mise en miroir peut provoquer la perte du quorum par le serveur principal de cette session ; si cela se produit, la base de données est mise en mode hors connexion et ses utilisateurs sont déconnectés.If a witness has been set for a session, dropping the database mirroring endpoint can cause the principal server of that session to lose quorum; if that occurs, the database is taken offline and its users are disconnected. Pour plus d’informations, consultez Quorum : effets d’un témoin sur la disponibilité de la base de données (mise en miroir de bases de données).For more information, see Quorum: How a Witness Affects Database Availability (Database Mirroring).

    Si le témoin ne dispose pas d’un point de terminaison, consultez Créer un point de terminaison de mise en miroir de bases de données pour l’authentification Windows (Transact-SQL).If the witness lacks an endpoint, see Create a Database Mirroring Endpoint for Windows Authentication (Transact-SQL).

  2. Si les instances partenaires s'exécutent sous différents comptes d'utilisateurs de domaine, créez une connexion pour ces différents comptes dans la base de données master de chaque instance.If the partner instances are running under different domain user accounts, create a login for the different accounts in the master database of each instance. Pour plus d’informations, consultez Autoriser l’accès sur le réseau à un point de terminaison de mise en miroir de bases de données au moyen de l’authentification Windows (SQL Server).For more information, see Allow Network Access to a Database Mirroring Endpoint Using Windows Authentication (SQL Server).

  3. Connectez-vous au serveur principal et exécutez l'instruction suivante :Connect to the principal server and issue the following statement:

    ALTER DATABASE <nom_base_de_données> SET WITNESS =<adresse_réseau_serveur>ALTER DATABASE <database_name> SET WITNESS =<server_network_address>

    <nom_base_de_données> est le nom de la base de données à mettre en miroir (ce nom est identique sur les deux partenaires) et <adresse_réseau_serveur> est l’adresse réseau du serveur de l’instance de serveur témoin.where <database_name> is the name of the database to be mirrored (this name is the same on both partners), and <server_network_address> is the server network address of the witness server instance.

    La syntaxe pour une adresse réseau de serveur est la suivante :The syntax for a server network address is as follows:

    TCP://<adresse-système>:<port>TCP://<system-address>:<port>

    où <adresse-système> est une chaîne qui identifie de façon non ambiguë l’ordinateur de destination et <port> est le numéro de port utilisé par le point de terminaison de la mise en miroir de l’instance de serveur partenaire.where <system-address> is a string that unambiguously identifies the destination computer system, and <port> is the port number used by the mirroring endpoint of the partner server instance. Pour plus d’informations, consultez Spécifier une adresse réseau de serveur (mise en miroir de bases de données).For more information, see Specify a Server Network Address (Database Mirroring).

    Ainsi, sur l'instance de serveur principal, l'instruction ALTER DATABASE suivante définit le témoin.For example, on the principal server instance, the following ALTER DATABASE statement sets the witness. Le nom de la base de données est AdventureWorks, l'adresse système est DBSERVER3—le nom du système témoin, et le port utilisé par le point de terminaison de mise en miroir de bases de données du témoin est 7022:The database name is AdventureWorks, the system address is DBSERVER3—the name of the witness system, and the port used by the database mirroring endpoint of the witness is 7022:

    ALTER DATABASE AdventureWorks   
      SET WITNESS = 'TCP://DBSERVER3:7022'  
    

ExempleExample

L'exemple suivant installe un témoin de mise en miroir de bases de données.The following example establishes a data mirroring witness. Sur l'instance du serveur témoin (instance par défaut sur WITNESSHOST4) :On the witness server instance (default instance on WITNESSHOST4):

  1. Créez un point de terminaison pour cette instance de serveur, afin que le rôle WITNESS utilise uniquement le port 7022.Create an endpoint for this server instance for the WITNESS role only using port 7022.

    CREATE ENDPOINT Endpoint_Mirroring  
        STATE=STARTED   
        AS TCP (LISTENER_PORT=7022)   
        FOR DATABASE_MIRRORING (ROLE=WITNESS)  
    GO  
    
  2. Créez une connexion pour les comptes d'utilisateurs de domaine des instances partenaires s'ils sont différents. Supposez, par exemple, que le témoin s'exécute sous SOMEDOMAIN\witnessusertandis que les partenaires s'exécutent sous MYDOMAIN\dbousername.Create a login for domain user account of partner instances, if different; for example, assume that the witness is running as SOMEDOMAIN\witnessuser, but the partners are running as MYDOMAIN\dbousername. Créez une connexion pour les partenaires comme suit :Create a login for the partners, as follows:

    --Create a login for the partner server instances,  
    --which are both running as MYDOMAIN\dbousername:  
    USE master ;  
    GO  
    CREATE LOGIN [MYDOMAIN\dbousername] FROM WINDOWS ;  
    GO  
    --Grant connect permissions on endpoint to login account   
    --of partners  
    GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [MYDOMAIN\dbousername];  
    GO  
    
  3. Sur chacune des instances partenaires, créez une connexion pour l'instance de serveur témoin :On each of the partner server instances, create a login for the witness server instance:

    --Create a login for the witness server instance,  
    --which is running as SOMEDOMAIN\witnessuser:  
    USE master ;  
    GO  
    CREATE LOGIN [SOMEDOMAIN\witnessuser] FROM WINDOWS ;  
    GO  
    --Grant connect permissions on endpoint to login account   
    --of partners  
    GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [SOMEDOMAIN\witnessuser];  
    GO  
    
  4. Sur le serveur principal, définissez le témoin (qui se trouve sur WITNESSHOST4) :On the principal server, set the witness (which is on WITNESSHOST4):

    ALTER DATABASE AdventureWorks   
        SET WITNESS =   
        'TCP://WITNESSHOST4:7022'  
    GO  
    

Note

L'adresse réseau du serveur signale l'instance de serveur cible par son numéro de port qui est mappé avec le point de terminaison mis en miroir de l'instance.The server network address indicates the target server instance by the port number, which maps to the mirroring endpoint of the instance.

Pour voir un exemple illustrant la configuration de la sécurité, la préparation de la base de données miroir, la définition des serveurs partenaires et l’ajout d’un témoin, consultez Configuration de la mise en miroir d’une base de données (SQL Server).For a complete example showing security setup, preparing the mirror database, setting up the partners, and adding a witness, see Setting Up Database Mirroring (SQL Server).

Voir aussiSee Also

ALTER DATABASE (Transact-SQL) ALTER DATABASE (Transact-SQL)
Autoriser l’accès sur le réseau à un point de terminaison de mise en miroir de bases de données au moyen de l’authentification Windows (SQL Server) Allow Network Access to a Database Mirroring Endpoint Using Windows Authentication (SQL Server)
Créer un point de terminaison de mise en miroir de bases de données pour l’authentification Windows (Transact-SQL) Create a Database Mirroring Endpoint for Windows Authentication (Transact-SQL)
Établir une session de mise en miroir de bases de données au moyen de l’authentification Windows (Transact-SQL) Establish a Database Mirroring Session Using Windows Authentication (Transact-SQL)
Supprimer le témoin d’une session de mise en miroir de bases de données (SQL Server) Remove the Witness from a Database Mirroring Session (SQL Server)
Témoin de mise en miroir de base de donnéesDatabase Mirroring Witness