Повторное развертывание пакетов служб SSIS -Кэш?

Недавно мы заметили проблему, из-за которой повторно развернутые пакеты SSIS иногда не включают последние изменения... Когда я ищу dtsx с помощью блокнота, я вижу измененный сценарий в коде, поэтому изменения определенно есть.

Мое предположение состояло в том, что компоненты сценариев пакетов SSIS в конечном итоге компилируются в сборку где-то в процессе -. Это вполне вероятно, поскольку я полагаю, что код C #не может работать без предварительной его компиляции. Таким образом, теоретически, если эти сборки в конечном итоге будут кэшированы, а не перезаписаны немедленно (по какой-то причине ), это объясняет эту проблему.

Единственное «доказательство», которое заставляет меня думать, что моя теория верна, это то, что если я продолжаю запускать пакет, в какой-то момент он внезапно переключается на новый код.

Однако пока не нашел, почему и как это происходит, если есть... Кто-нибудь может помочь?

ОБНОВЛЕНИЕ: MSDN сообщает :: «В отличие от более ранних версий, где вы могли указать, были ли сценарии предварительно скомпилированы, все сценарии предварительно скомпилированы в службах SQL Server 2008 Integration Services (, SSIS )и более поздних версиях». -Если под предварительно -скомпилированным они подразумевают, что вместо фактического пакета запускается предварительно -скомпилированная версия (, я думаю, это потому, что сам пакет, похоже, не скомпилирован, так как код виден в Блокноте )должен быть способ заставить движок перезаписать предварительно -скомпилированную сборку... но как?

ОБНОВЛЕНИЕ: Одним из четырех основных компонентов служб SSIS является служба SQL ServerIntegration Services , которая является службой Windows. По-видимому, эта служба будет кэшировать метаданные компонента/задачи, чтобы механизм выполнения SSIS мог опросить кеш, чтобы узнать, что установлено, что может помочь ускорить время загрузки пакетов. Однако если пакеты хранятся в файловой системе (, а не в службах SQL Integration Services )и выполняются заданиями агента, задание агента будет использовать 64-разрядную версию DTEXEC для выполнения пакетов. Я еще не нашел доказательств того, что там будет задействовано какое-либо кэширование, но, безусловно, есть варианты проверки ряда параметров на этапе проверки выполнения,такие как номера версий -, могут быть не просто так.

13
задан G Berdal 6 July 2012 в 14:31
поделиться