SQL ServerのLogShippingを構成するときに、セカンダリデータベースをリカバリなしモードまたはスタンバイモードにすることを選択できます。リカバリなしとは、ログ配布が行われている間はデータベースにアクセスできないことを意味します。スタンバイは読み取り専用アクセスを提供し、復元が行われようとしているときにユーザーを切断するオプションを選択した場合、ログ配布プロセスに干渉しないように見えます。これは、スタンバイモードの追加の利点のように見えますが、私が見る限り、ドキュメントには悪影響はありません。
したがって、なぜ誰もが回復なしモードを使用することを選択するのだろうかと思いますか?私が考えることができる唯一のもっともらしい理由は、スタンバイモードが大幅なパフォーマンスの低下を引き起こした場合(ただし、ドキュメントにはそのようなことは記載されていません)、またはセカンダリデータベースのコンテンツが誰にも見られないようにするためのセキュリティ要件がある場合です(これはまれ/ありそうもないように思われます)。
回復なしモードを選択することの利点が何であるかを誰かに教えてもらえますか?
NORECOVERY
モードを使用すると、ターゲットデータベースへのアクセスが許可されないため、データベースはコミットされていないトランザクションを気にする必要がありません。ログは「そのまま」復元して、その状態のままにすることができます。
STANDBY
モードを使用すると、データベースはNORECOVERY
として復元され、ログ内のコミットされていないすべてのトランザクションを分析してロールバックします。その後、ユーザーに読み取り専用アクセスを許可できます。次のログが復元されると、データベースはすべてのユーザーを切断し、コミットされていないトランザクションを最後のログから再度ロールフォワードしてから復元します。
ご覧のとおり、トランザクション量によっては、STANDBY
の復元時に余分なオーバーヘッドが大きくなる可能性があります。