web-dev-qa-db-ja.com

オブジェクト '[sp_name]'の定義は、ミラーデータベースへのフェイルオーバー時にコンパイルされてから変更されました

2つのSQL 2012データベースサーバーがミラーで構成されており、自動フェールオーバーのミラーリングが行われています。

昨日、プライマリサーバーでHDDの劣化が発生してフェイルオーバーがトリガーされましたが、セカンダリサーバーが原則になると、一部のSPROCの実行で多くのエラーが発生し始めました。

オブジェクト '[sp_name]'の定義は、コンパイル後に変更されました

これは、新しい原則でsp_recompileを実行することで解決できることを理解しています。これにより、すべてのSPROC、関数、およびトリガーが強制的に再コンパイルされます。

フェイルオーバー時に手動で介入する必要があるため、これは理想的ではありません。これは構成を修正することで解決できる問題ですか、それともSQL Serverの既知のバグですか?

6
QFDev

どのSQLエディションを使用していますか?エンジンがメタデータカタログを参照できず、このようなエラーが発生する場合がありました。これはバグとして識別されました。ただし、この問題を解決するには回避策があります。次にsp_recompileを使用して実行したときに、ストアドプロシージャを再コンパイルできた場合。

コンパイルと再コンパイルの詳細については、以下で説明します。

ストアドプロシージャを再コンパイル

SSMSのストアドプロシージャを更新し、プロシージャを呼び出す別のアプリケーションを実行します。プロシージャを編集しているセッションを終了する必要があります。変更は、コミットされるまで編集セッションでのみ表示されます。

以下のリンクを確認してください:

オブジェクト 'name'の定義はコンパイル後に変更されました

1
CR241