私のWebアプリはSQLServer2008に対してADO.NETを使用しています。データベースの書き込みはプライマリ(パブリッシャー)データベースに対して行われますが、読み取りはプライマリ(サブスクライバー)データベース間で負荷分散されます。SQL Serverの組み込みのトランザクションレプリケーションを使用して、セカンダリを最新の状態に保ちます。ほとんどの場合、数秒の遅延は問題になりません。
ただし、セカンダリサイトでトランザクションがコミットされるまでブロックしたい場合があります。数秒間ブロックしても問題ありませんが、古いページをユーザーに返すことはできません。ADO.NETまたはTSQLで、レプリケーションが完了するのを待つように指定する方法はありますか?または、発行元から、セカンダリサーバーに手動で接続せずに、トランザクションのレプリケーションステータスを確認できますか。
[編集]99.9%の確率で、サブスクライバーのデータは「十分に新鮮」です。しかし、それを無効にする操作が1つあります。それが無効になるという偶然の機会に、私は毎回出版社から読むことができません。トランザクションレプリケーションでこの問題を解決できない場合は、別のアーキテクチャを提案できますか?