Недавно мы заметили, что перераспределенные пакеты SSIS иногда не включают последние изменения... Когда я просматриваю dtsx с помощью блокнота, я вижу измененный script в коде, поэтому изменения, безусловно, есть.
Мое предположение заключалось в том, что компоненты пакетов SSIS script в конечном итоге скомпилированы в сборку где-то в процессе - это вполне вероятно, так как я предполагаю, что код С# не может работать без компиляции. Поэтому теоретически, если эти сборки затем будут кэшироваться и не будут немедленно перезаписаны (по какой-то причине), это объяснит эту проблему.
Единственное "доказательство", которое заставляет меня думать, что моя теория верна, - если я продолжаю запускать пакет в какой-то момент, он внезапно переходит к новому коду.
Однако до сих пор я не нашел, почему и как это происходит, если есть... Может ли кто-нибудь помочь?
UPDATE: MSDN говорит: "В отличие от более ранних версий, где вы могли бы указать, были ли предварительно скомпилированы сценарии, все сценарии предварительно скомпилированы в SQL Server 2008 Integration Services (SSIS) и более поздних версиях". - Если предварительно скомпилированные они означают, что вместо фактического пакета запускается предварительно скомпилированная версия (я думаю, это потому, что сам пакет, похоже, не скомпилирован, поскольку код отображается в "Блокноте" ), должен быть способ принудительно чтобы перезаписать предварительно скомпилированную сборку... но как?
UPDATE: Одним из четырех основных компонентов SSIS является служба SQL ServerIntegration Services, которая является службой Windows. По-видимому, эта служба будет кэшировать метаданные компонентов/задач, чтобы механизм времени выполнения SSIS мог опросить кеш, чтобы увидеть, что установлено, что может ускорить загрузку пакетов. Однако, если пакеты хранятся в файловой системе (а не в службах интеграции SQL) и выполняются с помощью агентских заданий, задание агента будет использовать 64-разрядную версию DTEXEC для выполнения пакетов. Я еще не нашел доказательств того, что там будет задействовано какое-либо кэширование, но есть определенные возможности для проверки ряда параметров на этапе проверки выполнения, таких как номера версий, - может быть по какой-то причине.