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.
[Haut de la page]
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.
[!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.
[Haut de la page]
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.
Interrompez la base de données à l'aide de l'instruction ALTER DATABASE suivante :
ALTER DATABASE database_name SET HADR SUSPEND
[Haut de la page]
Utilisation de PowerShell
Pour interrompre une base de données
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.
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
[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 :
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
[Haut de la page]
Tâches associées
Voir aussi
Concepts
Vue d'ensemble des groupes de disponibilité AlwaysOn (SQL Server)