Konfiguracje pakietów SSIS 2008 są ignorowane


10

Wraz ze zmianą konfiguracji pakietów w 2008 r. W porównaniu z 2005 r., Kiedy podałem / ConfigFile coś.dtsConfig w wierszu poleceń, zmienne zdefiniowane w pakiecie zachowują swoje wartości czasu projektowania zamiast używać ustawień z pliku konfiguracyjnego.

Nie jestem do końca pewien, jak rozumiem, JAK w ogóle uzyskać zewnętrzny plik konfiguracyjny. Przeczytałem artykuły, które mówią, że tylko skonfigurowane konfiguracje w czasie projektowania zastąpią ładowanie zewnętrznego pliku. Czy to oznacza, że ​​mogę zmienić zmienne na puste ciągi i wtedy zostaną one nadpisane? Nie mogę całkowicie usunąć zmiennej! Co z liczbami całkowitymi?

Widziałem artykuły, które wspominają o wyłączaniu za pomocą konfiguracji pakietów w pakiecie.

Mogę użyć edytora pakietów SSIS lub edytora XML, aby zmienić ścieżkę pliku konfiguracyjnego w pakiecie, a następnie użyje ustawień tego pliku „ostatni” (niezależnie od opcji zewnętrznego / ConfigFile), ale nie chcę być zmiana pakietu. Chcę jednego pakietu z Test.dtsConfig i Production.dtsConfig i mieć możliwość przełączania się tam iz powrotem bez zmiany pakietu.

Jaka jest teraz zalecana metoda?


1
Ulgę możesz znaleźć tutaj na forum SQLServerCentral. Niektóre wyjaśnienie zmiany zachowań jest tutaj - sekcja Zachowanie zmian związanych z pakietem konfiguracjach.
— Marian

Proszę zobaczyć następujące pliki, aby zorientować się, o których pakietach i konfiguracjach mówię: Config i partie , Testuj pakiet i Readme .
— Marian

Odpowiedzi:


10

Musisz wziąć pod uwagę, że podczas uruchamiania przez BIDS pakiet pobierze najpierw wartość zmiennej z pliku konfiguracyjnego i tylko jeśli plik konfiguracyjny nie istnieje, wygeneruje ostrzeżenie i wartość zostanie pobrana z pakietu.

Teraz sytuacja w linii poleceń jest nieco inna. Możesz mieć następujące sytuacje:

  1. uruchom pakiet w linii cmd bez wybranego pliku konfiguracyjnego:

    dtExec /file "e:\Work\TestPackageConfiguration\TestPackageConfiguration\TestPackage.dtsx"
    • jeśli oryginalny plik konfiguracyjny (nazwijmy go Prod) nie istnieje w tej samej ścieżce zdefiniowanej w metadanych pakietu, używane są wartości z pakietu i zostanie wyświetlone ostrzeżenie o braku pliku konfiguracyjnego;
    • jeśli oryginalny plik konfiguracyjny istnieje i jest poprawny, wówczas zostaną użyte wartości z pliku konfiguracyjnego (wartości wewnętrzne zostaną pominięte);
  2. uruchom pakiet w linii cmd bez wybranego pliku konfiguracyjnego, ale ze zmienną ustawioną w wywołaniu:

    dtExec /file "e:\Work\TestPackageConfiguration\TestPackageConfiguration\TestPackage.dtsx" /SET \Package.Variables[checkMe];"outside the package in cmd line"
    • jeśli oryginalny plik konfiguracyjny nie istnieje, wartość jest pobierana z wywołania pakietu / SET;
    • jeśli oryginalny plik konfiguracyjny istnieje, to wartość jest pobierana z pliku konfiguracyjnego, a nawet / SET jest ignorowany (jest to używane tylko w powyższym przypadku);
  3. uruchom pakiet w linii cmd z nowym plikiem konfiguracyjnym (powiedzmy DEV zamiast Prod):

    dtExec /file "e:\Work\TestPackageConfiguration\TestPackageConfiguration\TestPackage.dtsx" /configFile "c:\ETL Config\TestPackage_config_Dev.dtsConfig"
    • jeśli nowy plik config (Dev) istnieje, a stary (Prod) nie, wówczas używane są wartości z niego;
    • jeśli istnieją zarówno plik konfiguracyjny Dev, jak i Prod, używane są tylko wartości z Prod (DEV jest pomijane, nawet jeśli podano to w wywołaniu wiersza poleceń);
  4. uruchom pakiet w wierszu cmd z nowym plikiem konfiguracyjnym i instrukcją SET w wywołaniu:

    dtExec /file "e:\Work\TestPackageConfiguration\TestPackageConfiguration\TestPackage.dtsx" /configFile "c:\ETL Config\TestPackage_config_Dev.dtsConfig" /SET \Package.Variables[checkMe];"outside the package in cmd line - DEV config"
    • jeśli oba pliki konfiguracyjne istnieją, Prod zostanie użyte, wszystkie inne zostaną zignorowane, nawet SET;
    • jeśli nie istnieje plik konfiguracyjny, zostanie użyta wartość SET;

Krótko mówiąc, jeśli chcesz użyć nowego pliku konfiguracyjnego, musisz zmienić nazwę / przenieść stary i wywołać pakiet za pomocą / configFile. Jeśli to nie wystarczy i chcesz zastąpić nawet nowy plik konfiguracyjny, użyj zmiennej / SET. Lub możesz ominąć dowolny plik konfiguracyjny i po prostu użyć instrukcji / SET w wywołaniu wsadowym.

Mam nadzieję, że rzuci to trochę światła na twoje możliwości.


Wygląda więc na to, że jednym z dużych problemów jest to, że moja ścieżka w oknie programowania jest identyczna jak taht na serwerze podczas wykonywania, więc ścieżka do konfiguracji w pakiecie jest zawsze poprawna.
— Cade Roux,

Więc myślę, że powinienem mieć Dev, Test i Prod, aby pakiet zawsze wskazywał Dev i nigdy nie miał konfiguracji Dev na moim serwerze, a następnie mogę wykonać wiele konfiguracji na serwerze i być w stanie działać na różnych konfiguracjach do woli, ponieważ Konfiguracja Dev w pakiecie nigdy nie zostanie znaleziona. Mogę więc debugować przy użyciu konfiguracji dewelopera, ale wtedy będę miał problem z uruchomieniem go z wiersza poleceń w oknie dewelopera, ponieważ znajdzie tę konfigurację.
— Cade Roux

Zakładam, że zgadzasz się, że jest to o wiele bardziej skomplikowane, niż powinno być, prawda? Jakby dostali nową, małą funkcję (przeładowanie) po zmianie na 2008 r., Ale zabili najpopularniejszy scenariusz użycia konfiguracji pakietów.
— Cade Roux

Cóż, TAK, zgadzam się, że jest to o wiele brzydsze niż powinno być. Wiele czasu zajęło mi rozgryzienie tego, ponieważ zawsze zapomniałem zmienić nazwę oryginalnego pliku konfiguracyjnego :-). Wolałbym, żeby była w następującej kolejności: SET, / configFile, oryginalna konfiguracja, wewnętrzna wartość pakietu. Dla mnie byłoby to bardziej sensowne
— Marian

Żaden z artykułów, które przeczytałem, nie wspomina, że ​​jest dostępny oryginalny plik konfiguracyjny, co stanowi duży problem. Teraz rozumiem, dlaczego opublikowali ten edytor pakietów SSIS, abyś mógł to zmienić w pakiecie bez konieczności otwierania BIDS.
— Cade Roux
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.