最近、再デプロイされた SSIS パッケージに最新の変更が含まれていないように見えることがあるという問題に気づきました...メモ帳を使用して dtsx を検索すると、コードに修正されたスクリプトが表示されるため、変更が確実に存在します。
私の仮定では、SSIS パッケージのスクリプト コンポーネントは、最終的にプロセスのどこかでアセンブリにコンパイルされます。これは、C# コードを最初にコンパイルしないと実行できないと想像するため、非常にありそうです。したがって、理論的には、これらのアセンブリがキャッシュされ、(何らかの理由で) すぐに上書きされない場合、この問題が説明されます。
私の理論が正しいと思わせる唯一の「証拠」は、ある時点でパッケージを実行し続けると、突然新しいコードに移行することです。
しかし、これまでのところ、なぜ、どのようにこれが起こっているのかを見つけていません。
更新: MSDN は次のように述べています。-プリコンパイルとは、実際のパッケージの代わりにプリコンパイルされたバージョンが実行されることを意味する場合 (コードがメモ帳に表示されているため、パッケージ自体がコンパイルされていないように見えるためだと思います)、プリコンパイル済みアセンブリを上書きするエンジン...しかし、どのように?
更新: SSIS の 4 つのコア コンポーネントの 1 つは、Windows サービスであるSQL ServerIntegration Services サービスです。どうやら、このサービスはコンポーネント/タスクのメタデータをキャッシュして、SSIS ランタイム エンジンがキャッシュをポーリングしてインストールされているものを確認できるようにします。これにより、パッケージの読み込み時間が短縮される可能性があります。ただし、パッケージが (SQL Integration Services ではなく) ファイル システムに格納され、エージェント ジョブによって実行される場合、エージェント ジョブは 64 ビット バージョンの DTEXEC を使用してパッケージを実行します。そこにキャッシュが含まれるという証拠はまだ見つかっていませんが、バージョン番号など、実行の検証フェーズでいくつかのパラメーターをチェックするオプションが確かにあり、それが理由である可能性があります。