J'ai un problème avec un AG particulier où j'ajoute une base de données (test123 ci-dessous) à l'AG et sur primaire, il affichera tout OK comme suit:
Cependant, sur le secondaire, il s'affiche avec un point d'exclamation comme suit et n'est pas ajouté à la liste des bases de données sur l'instance secondaire:
Je vois également ce message dans le journal des erreurs:
Impossible d'accéder à la base de données de disponibilité 'test123' car le réplica de la base de données n'est pas dans le rôle PRIMARY ou SECONDARY. Les connexions à une base de données de disponibilité sont autorisées uniquement lorsque le réplica de la base de données a le rôle PRIMARY ou SECONDARY. Recommencez l'opération plus tard. Les transactions non qualifiées sont annulées dans la base de données test123 pour un changement d'état des groupes de disponibilité Always On. Estimation de la restauration: 100%. Il s'agit d'un message d'information uniquement. Aucune action de l'utilisateur n'est requise.
J'utilise l'amorçage automatique pour remplir la base de données sur le secondaire.
J'ai ajouté le même DB à un AG différent et ce problème ne se produit pas et il a été ajouté avec succès.
La base de données est en modèle de récupération complète et une sauvegarde complète a également été effectuée et elle remplit les conditions préalables. AG et l'auditeur ont l'air bien, des idées quelle peut être la cause de cela?
Impossible d'accéder à la base de données de disponibilité 'test123' car le réplica de la base de données n'est pas dans le rôle PRIMARY ou SECONDARY. Les connexions à une base de données de disponibilité sont autorisées uniquement lorsque le réplica de la base de données a le rôle PRIMARY ou SECONDARY.
Vous avez signalé que la base de données ne s'affichait pas sous le dossier des bases de données lors de l'affichage de votre instance secondaire avec SSMS.
Si vous avez actualisé et qu'il n'était toujours pas là, cela signifie que la base de données n'existe pas. La raison serait/pourrait être que quelque chose s'est mal passé avec l'ensemencement automatique.
Vous devriez essayer d'exécuter ces commandes sur l'instance secondaire:
ALTER AVAILABILITY GROUP [agname] JOIN;
GO
ALTER AVAILABILITY GROUP [agname] GRANT CREATE ANY DATABASE;
GO
Après cela, vous devez réessayer l'amorçage automatique et valider que la base de données a été créée et entièrement amorcée sur l'instance secondaire.
Pour valider le processus d'amorçage automatique, vous pouvez utiliser le sys.dm_hadr_automatic_seeding
DMV.
SELECT start_time,
ag.name,
db.database_name,
current_state,
performed_seeding,
failure_state,
failure_state_desc
FROM sys.dm_hadr_automatic_seeding autos
JOIN sys.availability_databases_cluster db
ON autos.ag_db_id = db.group_database_id
JOIN sys.availability_groups ag
ON autos.ag_id = ag.group_id;