Le configurazioni del pacchetto SSIS 2008 vengono ignorate


10

Con la modifica delle configurazioni del pacchetto nel 2008 rispetto al 2005 quando ho specificato / ConfigFile qualcosa.dtsConfig sulla riga di comando, le variabili definite nel pacchetto mantengono i loro valori in fase di progettazione invece di utilizzare le impostazioni dal file di configurazione.

Non sono del tutto sicuro di aver capito come utilizzare il file di configurazione esterno. Ho letto articoli che affermano che solo le configurazioni in fase di progettazione impostate sovrascriveranno il caricamento del file esterno. Questo significa che posso cambiare le variabili in stringhe vuote e poi verranno sovrascritte? Non riesco a cancellare completamente la variabile! E i numeri interi?

Ho visto articoli che menzionano lo spegnimento tramite le configurazioni del pacchetto nel pacchetto.

Posso usare l'Editor pacchetti SSIS o un editor XML per modificare il percorso del file di configurazione nel pacchetto, quindi utilizzerà le impostazioni del file "last" (indipendentemente dall'opzione esterna / ConfigFile), ma non voglio essere cambiando il pacchetto. Voglio un pacchetto con Test.dtsConfig e Production.dtsConfig ed essere in grado di scambiare avanti e indietro senza cambiare il pacchetto.

Qual è il modo consigliato per farlo ora?


1
Puoi trovare il tuo sollievo qui , sul forum SQLServerCentral. Alcuni spiegazione del cambiamento di comportamento è qui - sezione Comportamento Modifiche correlate a pacchetto configurazioni.
Marian,

Si prega di vedere i seguenti file, per avere un'idea di quali pacchetti e configurazioni sto parlando: Config e batch , pacchetto di test e file Leggimi .
Marian,

Risposte:


10

È necessario tenere presente che quando viene eseguito da BIDS il pacchetto prenderà prima il valore della variabile dal file di configurazione e solo se il file di configurazione non esiste, genererà un avviso e il valore verrà preso dal pacchetto.

Ora, la situazione nella riga di comando è leggermente diversa. Puoi avere le seguenti situazioni:

  1. eseguire il pacchetto nella riga cmd senza scegliere alcun file di configurazione:

    dtExec /file "e:\Work\TestPackageConfiguration\TestPackageConfiguration\TestPackage.dtsx"
    • se il file di configurazione originale (chiamiamolo Prod) non esiste nello stesso percorso definito nei metadati del pacchetto, vengono utilizzati i valori dall'interno del pacchetto e riceverai un avviso che manca il file di configurazione;
    • se il file di configurazione originale esiste ed è valido, verranno utilizzati i valori del file di configurazione (i valori interni verranno ignorati);
  2. eseguire il pacchetto nella riga cmd senza scegliere alcun file di configurazione, ma con la variabile impostata nella chiamata:

    dtExec /file "e:\Work\TestPackageConfiguration\TestPackageConfiguration\TestPackage.dtsx" /SET \Package.Variables[checkMe];"outside the package in cmd line"
    • se il file di configurazione originale non esiste, il valore viene preso dalla chiamata al pacchetto / SET;
    • se esiste il file di configurazione originale, il valore viene preso dal file di configurazione e anche / SET viene ignorato (questo viene usato solo nel caso sopra);
  3. eseguire il pacchetto nella riga cmd con un nuovo file di configurazione (diciamo DEV invece Prod):

    dtExec /file "e:\Work\TestPackageConfiguration\TestPackageConfiguration\TestPackage.dtsx" /configFile "c:\ETL Config\TestPackage_config_Dev.dtsConfig"
    • se esiste il nuovo file config (Dev) e il vecchio (Prod) no, vengono utilizzati i valori da esso;
    • se esistono sia il file di configurazione Dev che Prod, vengono utilizzati solo i valori di Prod (DEV viene ignorato anche se specificato nella chiamata da riga di comando);
  4. eseguire il pacchetto nella riga cmd con un nuovo file di configurazione e un'istruzione SET nella chiamata:

    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"
    • se esistono entrambi i file di configurazione, verrà utilizzato Prod, tutti gli altri ignorati, anche il SET;
    • se non esiste alcun file di configurazione, verrà utilizzato il valore SET;

Quindi, in breve, se si desidera utilizzare un nuovo file di configurazione, è necessario rinominare / spostare quello vecchio e chiamare il pacchetto con / configFile. Se questo non è abbastanza e vuoi sovrascrivere anche il nuovo file di configurazione, usa la variabile / SET. Oppure puoi ignorare qualsiasi file di configurazione e usare semplicemente le istruzioni / SET nella chiamata batch.

Spero che possa far luce sulle tue possibilità.


Quindi sembra che uno dei maggiori problemi sia che il mio percorso sulla casella di sviluppo è identico a quello sul server durante l'esecuzione in modo che il percorso alla configurazione nel pacchetto sia sempre valido.
Cade Roux,

Quindi penso che dovrei avere Dev, Test e Prod, avere il pacchetto sempre puntato a Dev e mai avere una configurazione Dev sul mio Server e quindi posso fare più configurazioni sul server ed essere in grado di eseguire diverse configurazioni a piacimento dal momento che il La configurazione degli sviluppatori nel pacchetto non verrà mai trovata. Quindi posso eseguire il debug usando Dev config, ma poi avrò problemi a eseguirlo dalla riga di comando nella casella dev perché troverà quella configurazione dev.
Cade Roux,

Presumo che tu sia d'accordo sul fatto che questo è davvero molto più complesso di quanto dovrebbe essere, giusto? Come se avessero ottenuto una nuova piccola funzionalità (il ricaricamento) nella modifica al 2008, ma hanno ucciso lo scenario di utilizzo più comune delle configurazioni del pacchetto.
Cade Roux,

Bene, sì, sono d'accordo che è molto più brutto di quanto dovrebbe essere. Mi ci è voluto molto per capirlo, perché ho sempre dimenticato di rinominare il file di configurazione originale :-). Mi sarebbe piaciuto di più essere nel seguente ordine: SET, / configFile, original config, valore del pacchetto interno. Avrebbe avuto più senso per me ..
Marian,

Nessuno degli articoli che ho letto menziona davvero che è il file di configurazione originale ad essere accessibile che è molto il problema. Ora vedo perché hanno pubblicato l'Editor dei pacchetti SSIS in modo da poterlo modificare all'interno del pacchetto senza dover aprire BIDS.
Cade Roux,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.