2012年のスタンダードエディションインスタンスがあり、DRの目的で2つの関連するデータベースを15分ごとにセカンダリ2012スタンダードエディションインスタンスにログ配布しています。読み取り専用アクセスを提供しますが、復元ジョブが実行されると、ユーザーは15分ごとに自動的に切断されます(復元が完了するまでに最大2分かかります)。
そのプロセスを妨害することなく、レポートおよび開発者のトラブルシューティングの目的で、少なくとも15分ごとに最新に保たれる(レポートはほぼリアルタイムのデータを必要とします)が、定期的には関与しないセカンダリインスタンスをセットアップしたいと思います。切断、プライマリとは異なるセキュリティを有効にし(開発者はセカンダリから読み取ることができるが、プライマリからは読み取れないようにする)、できればプライマリに存在しないインデックスを作成できるようにします(レポートのパフォーマンスを向上させるため)。
1)これをどのように達成できますか? 2)Enterprise Editionにアップグレードせずにこれを実現するにはどうすればよいですか?
トランザクションレプリケーションは、通常、レポートを別のサーバー/インスタンスにオフロードするために使用され、ベストケースのシナリオではほぼリアルタイムになります。トランザクションレプリケーションの利点は、サブスクライバーにさまざまなインデックスを配置してレポートを最適化できることです。レポートにサブセットのみが必要な場合は、データの一部のみを複製するように選択することもできます。
トランザクションレプリケーションでは、パブリッシャにはスタンダードエディション以上が必要です。サブスクライバはエクスプレスエディション以上にすることができます。
はじめに トランザクションレプリケーション をご覧ください。
ご不明な点がございましたら、お気軽にお問い合わせください。これがお役に立てば幸いです。
Always Onが利用できない場合は、カスタムETLプロセスを 変更追跡 と組み合わせて、最小限の作業を実行できるようにすることができます。これにより、セカンダリが異なるインデックスを持つだけでなく、異なるスキーマを持つことができます。 ETLパッケージは、必要に応じて何度でもスケジュールできます。
トリガーを使用して、セカンダリへのService Brokerメッセージを配信できます。ただし、非常に高いトランザクション負荷ではうまくスケーリングしないという報告を聞いたことがあります。 CLR SP WCFメッセージを外部のC#プログラムに送信することで、Service Brokerのような機能を1回実装しました。これは、私の使用パターンでうまく機能しました。