0

何年も実行されているビューは、いくつかのテーブルから特定の列を選択して結合します。最近、テーブルの 1 つに列を追加したところ、ビューが正しく機能しなくなりました。クエリ結果の列の 1 つに、テーブルの別の列からのデータが含まれていました。スクリプトからビューを再構築しました-スクリプトに変更はありません-そして問題はなくなりました。ビューは新しい列を見ません。

何が起こっている?

4

1 に答える 1

0

クエリは SELECT * を使用しています。再コンパイルするだけです。

ビューがコンパイルされると、フィールドの名前ではなく、レコード内のフィールドのオフセットがコンパイルされます。基になるテーブルが変更された場合。. . オフセットが正しい位置に移動しなくなりました。

残念ながら、私は昔々、数値が数値エラーになる理由を解明しようとして約 5 時間後にこのことを知りました -- 午前 6:00 から。

SQL Server Management Studio を使用して、ビューを別のスクリプトとしてスクリプト化し、コードを (変更なしで) 実行することで、再コンパイルを行います。ただし、列の明示的なリストを挿入することでコードを変更でき、将来この問題が発生することはありません。

将来この問題を防ぐために、毎晩すべてのビューを再コンパイルするスクリプトを設定することもできます。現在、そのようなスクリプトもあります。

于 2012-08-15T20:05:09.393 に答える