特定のAGに問題があり、AGにDB(以下のtest123)を追加すると、プライマリーで次のようにすべてが正常に表示されます。
ただし、セカンダリでは、次のように感嘆符で表示され、セカンダリインスタンスのDBのリストには追加されません。
エラーログにも次のメッセージが表示されます。
データベースレプリカがPRIMARYまたはSECONDARYロールにないため、可用性データベース 'test123'にアクセスできません。可用性データベースへの接続は、データベースレプリカがPRIMARYまたはSECONDARYロールにある場合にのみ許可されます。後で操作を再試行してください。適格でないトランザクションは、Always On可用性グループの状態変更のためにデータベースtest123でロールバックされています。推定ロールバック完了:100%。これは情報メッセージです。ユーザーの操作は必要ありません。
自動シードを使用して、セカンダリにデータベースを設定しています。
sameDBをdifferentAGに追加しましたが、この問題は発生せず、正常に追加されました。
DBは完全復旧モデルであり、完全バックアップも取られており、前提条件を満たしています。 AGとリスナーはうまく見えますが、これの原因となる可能性のあるアイデアはありますか?
データベースレプリカがPRIMARYまたはSECONDARYロールにないため、可用性データベース 'test123'にアクセスできません。可用性データベースへの接続は、データベースレプリカがPRIMARYまたはSECONDARYロールにある場合にのみ許可されます。
SSMSでセカンダリインスタンスを表示すると、データベースフォルダーの下にデータベースが表示されなかったと報告しました。
更新してもまだそこにない場合は、データベースが存在しないことを意味します。その理由は、自動シーディングで問題が発生したためです。
次のコマンドをセカンダリインスタンスで実行してみてください:
ALTER AVAILABILITY GROUP [agname] JOIN;
GO
ALTER AVAILABILITY GROUP [agname] GRANT CREATE ANY DATABASE;
GO
この後、自動シードを再試行し、データベースが作成され、セカンダリインスタンスに完全にシードされたことを確認する必要があります。
自動シードプロセスを検証するには、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;