Interrompre une base de données de disponibilité (SQL Server)
S'applique à : SQL Server
Vous pouvez interrompre une base de données de disponibilité dans Groupes de disponibilité Always On à l'aide de SQL Server Management Studio, de Transact-SQL ou de PowerShell dans SQL Server. 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. Ce comportement s’applique uniquement lorsque les connexions sont ouvertes à l’aide de l’écouteur et du routage en lecture seule. 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 ** Quand 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. |
Notes
La suspension d’une base de données secondaire Always On n’affectent pas directement la disponibilité de la base de données primaire. Toutefois, l'interruption d'une base de données secondaire peut avoir une incidence sur les capacités de redondance et de basculement de la base de données principale. 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 Always On 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 :
Pour interrompre une base de données à l'aide de :
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.
Prérequis
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
Nécessite 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.
Utilisation de SQL Server Management Studio
Pour interrompre une base de données
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.
Développez le nœud Haute disponibilité AlwaysOn et le nœud Groupes de disponibilité .
Développez le groupe de disponibilité.
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.
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.
Notes
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.
Utilisation de Transact-SQL
Pour interrompre une base de données
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.
Suspendez la base de données à l’aide de l’instruction ALTER DATABASE suivante :
ALTER DATABASE nom_base_de_données SET HADR SUSPEND;
Utilisation de PowerShell
Pour interrompre une base de données
Remplacez le répertoire (cd) par 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.
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éeComputer\Instance
.Suspend-SqlAvailabilityDatabase ` -Path SQLSERVER:\Sql\Computer\Instance\AvailabilityGroups\MyAg\AvailabilityDatabases\MyDb3
Notes
Pour voir la syntaxe d’une applet de commande, utilisez l’applet de commande Get-Help dans l’environnement SQL Server PowerShell. Pour en savoir plus, voir Get Help SQL Server PowerShell.
Pour configurer et utiliser le fournisseur SQL Server PowerShell
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 :
Ajoutez davantage d'espace de journal pour la base de données primaire.
Reprenez la base de données secondaire avant que le journal ne soit saturé. Pour plus d'informations, consultez Reprendre une base de données de disponibilité (SQL Server).
Supprimez la base de données secondaire. Pour plus d’informations, consultez Supprimer une base de données secondaire d’un groupe de disponibilité (SQL Server).
Pour résoudre les problèmes liés à la saturation du journal des transactions
Tâches associées
Voir aussi
Vue d’ensemble des groupes de disponibilité Always On (SQL Server)
Reprendre une base de données de disponibilité (SQL Server)