web-dev-qa-db-ja.com

可用性グループへのデータベースの追加に関する問題

特定のAGに問題があり、AGにDB(以下のtest123)を追加すると、プライマリーで次のようにすべてが正常に表示されます。

enter image description here

ただし、セカンダリでは、次のように感嘆符で表示され、セカンダリインスタンスのDBのリストには追加されません。

enter image description here

エラーログにも次のメッセージが表示されます。

データベースレプリカがPRIMARYまたはSECONDARYロールにないため、可用性データベース 'test123'にアクセスできません。可用性データベースへの接続は、データベースレプリカがPRIMARYまたはSECONDARYロールにある場合にのみ許可されます。後で操作を再試行してください。適格でないトランザクションは、Always On可用性グループの状態変更のためにデータベースtest123でロールバックされています。推定ロールバック完了:100%。これは情報メッセージです。ユーザーの操作は必要ありません。

自動シードを使用して、セカンダリにデータベースを設定しています。

sameDBをdifferentAGに追加しましたが、この問題は発生せず、正常に追加されました。

DBは完全復旧モデルであり、完全バックアップも取られており、前提条件を満たしています。 AGとリスナーはうまく見えますが、これの原因となる可能性のあるアイデアはありますか?

2
user1930901

データベースレプリカが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;

ソース

1
Randi Vertongen