Partager via


Interrompre une base de données de disponibilité (SQL Server)

Vous pouvez interrompre une base de données de disponibilité dans Groupes de disponibilité AlwaysOn à l'aide de SQL Server Management Studio, de Transact-SQL ou de PowerShell dans SQL Server 2012. Notez qu'une commande d'interruption doit être émise sur l'instance du serveur qui héberge la base de données à interrompre ou à reprendre.

L'effet d'une commande d'interruption varie selon que vous interrompez une base de données principale ou secondaire, comme suit :

Base de données interrompue

Effet de la commande d'interruption

Base de données secondaire

Seule la base de données secondaire locale est interrompue et son état de synchronisation devient NOT SYNCHRONIZING. Les autres bases de données secondaires ne sont pas affectées. La base de données interrompue cesse de recevoir et d'appliquer des données (enregistrements de journal) et commence à se situer en retrait par rapport à la base de données principale. Les connexions existantes sur le réplica secondaire accessible en lecture restent utilisables. Les nouvelles connexions à la base de données suspendue sur le réplica secondaire accessible en lecture ne sont pas autorisées tant que le déplacement des données n'a pas repris.

La base de données primaire reste disponible. Si vous interrompez chaque base de données secondaire correspondante, la base de données principale est exposée.

Important

Lorsqu'une base de données secondaire est suspendue, la file d'attente d'envoi de la base de données primaire correspondante accumule des enregistrements du journal des transactions non envoyés. Les connexions au réplica secondaire retournent des données qui étaient disponibles lorsque le déplacement des données a été suspendu.

Base de données principale

La base de données principale cesse le déplacement des données vers chaque base de données secondaire connectée. La base de données principale continue à s'exécuter, en mode exposé. La base de données principale reste à la disposition des clients, les connexions existantes sur un réplica secondaire accessible en lecture restent utilisables et de nouvelles connexions peuvent être établies.

[!REMARQUE]

L'interruption d'une base de données secondaire AlwaysOn n'affecte pas directement la disponibilité de la base de données primaire. Toutefois, l'interruption d'une base de données secondaire peut avoir un impact sur la redondance et les capacités de basculement de la base de données primaire. Ce comportement diffère d'une mise en miroir de bases de données dans laquelle l'état de mise en miroir est interrompu à la fois sur la base de données miroir et la base de données principale. L'interruption d'une base de données principale AlwaysOn interrompt le déplacement des données sur toutes les bases de données secondaires correspondantes, et les capacités de redondance et de basculement cessent pour cette base de données tant que la base de données principale n'a pas repris.

  • Avant de commencer :

    Limitations et restrictions

    Conditions préalables

    Recommandations

    Sécurité

  • Pour interrompre une base de données à l'aide de :  

  • SQL Server Management Studio

    Transact-SQL

    PowerShell

  • Suivi :  Comment éviter un journal des transactions plein

  • Tâches associées

Avant de commencer

Limitations et restrictions

Une commande SUSPEND retourne dès qu'elle est acceptée par le réplica qui héberge la base de données cible, mais en réalité, l'interruption de la base de données se produit de façon asynchrone.

Conditions préalables requises

Vous devez être connecté à l'instance de serveur qui héberge la base de données que vous souhaitez interrompre. Pour interrompre une base de données primaire et les bases de données secondaires correspondantes, connectez-vous à l'instance de serveur qui héberge le réplica principal. Pour interrompre une base de données secondaire tout en laissant la base de données primaire disponible, connectez-vous au réplica secondaire.

Recommandations

Lors de goulots d'étranglement, l'interruption d'une ou plusieurs bases de données secondaires, même brièvement, peut être utile pour améliorer les performances temporairement sur le réplica principal. Tant qu'une base de données secondaire reste suspendue, le journal des transactions de la base de données primaire correspondante ne peut pas être tronqué. Cela provoque l'accumulation des enregistrements du journal sur la base de données primaire. Par conséquent, nous vous recommandons de reprendre, ou de supprimer, une base de données secondaire suspendue rapidement. Pour plus d'informations, consultez Suivi : Comment éviter un journal des transactions plein, plus loin dans cette rubrique.

Sécurité

Autorisations

Requiert l'autorisation ALTER sur la base de données.

Requiert l'autorisation ALTER AVAILABILITY GROUP sur le groupe de disponibilité, l'autorisation CONTROL AVAILABILITY GROUP, l'autorisation ALTER ANY AVAILABILITY GROUP ou l'autorisation CONTROL SERVER.

Icône de flèche utilisée avec le lien Retour en haut[Haut de la page]

Utilisation de SQL Server Management Studio

Pour interrompre une base de données

  1. Dans l'Explorateur d'objets, connectez-vous à l'instance de serveur qui héberge le réplica de disponibilité sur lequel vous souhaitez interrompre une base de données et développez l'arborescence du serveur. Pour plus d'informations, consultez Conditions préalables requises, plus haut dans cette rubrique.

  2. Développez le nœud Haute disponibilité AlwaysOn et le nœud Groupes de disponibilité.

  3. Développez le groupe de disponibilité.

  4. Développez le nœud Bases de données de disponibilité, cliquez avec le bouton droit sur la base de données, puis sélectionnez Suspendre le déplacement des données.

  5. Dans la boîte de dialogue Suspendre le déplacement des données, cliquez sur OK.

    L'Explorateur d'objets indique que la base de données est interrompue en modifiant l'icône de base de données de sorte qu'elle affiche un indicateur de pause.

[!REMARQUE]

Pour interrompre des bases de données supplémentaires sur cet emplacement de réplica, répétez les étapes 4 et 5 pour chaque base de données.

Icône de flèche utilisée avec le lien Retour en haut[Haut de la page]

Utilisation de Transact-SQL

Pour interrompre une base de données

  1. Connectez-vous à l'instance de serveur qui héberge le réplica dont vous souhaitez interrompre la base de données. Pour plus d'informations, consultez Conditions préalables requises, plus haut dans cette rubrique.

  2. Interrompez la base de données à l'aide de l'instruction ALTER DATABASE suivante :

    ALTER DATABASE database_name SET HADR SUSPEND

Icône de flèche utilisée avec le lien Retour en haut[Haut de la page]

Utilisation de PowerShell

Pour interrompre une base de données

  1. Accédez au répertoire (cd) de l'instance de serveur qui héberge le réplica dont vous souhaitez interrompre la base de données. Pour plus d'informations, consultez Conditions préalables requises, plus haut dans cette rubrique.

  2. Utilisez l'applet de commande Suspend-SqlAvailabilityDatabase pour interrompre le groupe de disponibilité.

    Par exemple, la commande suivante interrompt la synchronisation des données pour la base de données de disponibilité MyDb3 dans le groupe de disponibilité MyAg sur l'instance de serveur nommée Computer\Instance.

    Suspend-SqlAvailabilityDatabase ` 
    -Path SQLSERVER:\Sql\Computer\Instance\AvailabilityGroups\MyAg\Databases\MyDb3
    

    [!REMARQUE]

    Pour afficher la syntaxe d'une applet de commande, utilisez l'applet de commande Get-Help dans l'environnement SQL Server PowerShell. Pour plus d'informations, consultez Obtenir de l'aide sur SQL Server PowerShell.

Pour configurer et utiliser le fournisseur SQL Server PowerShell

Icône de flèche utilisée avec le lien Retour en haut[Haut de la page]

Suivi : Comment éviter un journal des transactions plein

En général, lorsqu'un point de contrôle automatique est effectué sur une base de données, son journal des transactions est tronqué jusqu'à ce point de contrôle après la sauvegarde du journal suivante. Toutefois, pendant qu'une base de données secondaire est interrompue, tous les enregistrements de journal en cours restent actifs sur la base de données primaire. Si le journal des transactions est saturé (soit parce qu'il a atteint sa taille maximale, soit parce que l'instance de serveur manque de place), la base de données ne peut plus effectuer de mises à jour.

Pour éviter ce problème, vous devez procédez de l'une des manières suivantes :

Pour résoudre les problèmes liés à la saturation du journal des transactions

Icône de flèche utilisée avec le lien Retour en haut[Haut de la page]

Tâches associées

Voir aussi

Concepts

Vue d'ensemble des groupes de disponibilité AlwaysOn (SQL Server)

Reprendre une base de données de disponibilité (SQL Server)