SSIS 2008 Paket Yapılandırmaları yok sayılıyor


10

Komut satırında / ConfigFile bir şey.dtsConfig öğesini belirttiğimde, 2008'deki paket yapılandırmalarında yapılan değişiklikle, pakette tanımlanan değişkenler, yapılandırma dosyasındaki ayarları kullanmak yerine tasarım zamanı değerlerini koruyor.

Hiç harici yapılandırma dosyası almak için NASIL anladım emin değilim. Yalnızca ayarlanan tasarım zamanı yapılandırmalarının harici dosyanın yükünün üzerine yazacağını söyleyen makaleler okudum. Bu, değişkenleri boş dizelere değiştirebileceğim ve daha sonra bunların üzerine yazılacağı anlamına mı geliyor? Değişkeni tamamen silemiyorum! Tam sayılar ne olacak?

Paketteki paket yapılandırmalarını kullanarak kapatmayı belirten makaleler gördüm.

Paketteki yapılandırma dosyası yolunu değiştirmek için SSIS Paket Düzenleyicisi'ni veya bir XML düzenleyicisini kullanabilirim ve daha sonra bu dosyanın ayarlarını "son" (harici / ConfigFile seçeneğinden bağımsız olarak) kullanır, ancak olmak istemiyorum paketi değiştirme. Test.dtsConfig ve Production.dtsConfig ile bir paket istiyorum ve paketi değiştirmeden ileri geri değiştirebiliyorum.

Bunu şimdi yapmanın önerilen yolu nedir?


1
Eğer rahatlama bulabilirsiniz burada SQLServerCentral forumunda. Davranış değişikliğine ilişkin bazı açıklamalar burada - Paket Yapılandırmalarıyla İlgili Davranış Değişiklikleri bölümü.
Marian

Hangi paketlerden ve yapılandırmalardan bahsettiğim hakkında bir fikir edinmek için lütfen aşağıdaki dosyalara bakın: Config and batches , Test package and Readme .
Marian

Yanıtlar:


10

BIDS tarafından çalıştırılırken, paketin önce değişken dosyasını yapılandırma dosyasından alacağını ve yalnızca yapılandırma dosyası yoksa, bir uyarı göndereceğini ve değerin paketten alınacağını dikkate almalısınız.

Şimdi, komut satırındaki durum biraz farklı. Aşağıdaki durumlara sahip olabilirsiniz:

  1. seçilen herhangi bir yapılandırma dosyası olmadan paketi cmd satırında çalıştırın:

    dtExec /file "e:\Work\TestPackageConfiguration\TestPackageConfiguration\TestPackage.dtsx"
    • orijinal yapılandırma dosyası (Prod adını verelim) paketin meta verilerinde tanımlananla aynı yolda yoksa, paketin içindeki değerler kullanılır ve config dosyasının eksik olduğuna dair bir uyarı alırsınız;
    • orijinal yapılandırma dosyası varsa ve geçerliyse, yapılandırma dosyasındaki değerler kullanılır (iç değerler atlanır);
  2. paketi cmd satırında herhangi bir yapılandırma dosyası seçilmeden, ancak çağrıda değişken ayarlanmış olarak çalıştırın:

    dtExec /file "e:\Work\TestPackageConfiguration\TestPackageConfiguration\TestPackage.dtsx" /SET \Package.Variables[checkMe];"outside the package in cmd line"
    • orijinal yapılandırma dosyası yoksa, değer / SET paket çağrısından alınır;
    • orijinal yapılandırma dosyası varsa, değer yapılandırma dosyasından alınır ve / SET bile yoksayılır (bu yalnızca yukarıdaki durumda kullanılır);
  3. paketi cmd satırında yeni bir yapılandırma dosyasıyla çalıştırın (diyelim ki Prod yerine Prod):

    dtExec /file "e:\Work\TestPackageConfiguration\TestPackageConfiguration\TestPackage.dtsx" /configFile "c:\ETL Config\TestPackage_config_Dev.dtsConfig"
    • yeni config (Dev) dosyası varsa ve eski (Prod) yoksa, ondan değerler kullanılır;
    • hem Dev hem de Prod yapılandırma dosyası varsa, yalnızca Prod'dan gelen değerler kullanılır (komut satırı çağrısında belirtilse bile DEV atlanır);
  4. yeni bir yapılandırma dosyası ve çağrıda bir SET deyimi ile paketi cmd satırında çalıştırın:

    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"
    • her iki yapılandırma dosyası da varsa, Prod kullanılır, diğerleri yok sayılır, hatta SET;
    • hiçbir yapılandırma dosyası yoksa, SET değeri kullanılır;

Kısacası, yeni bir yapılandırma dosyası kullanmak istiyorsanız eskisini yeniden adlandırmanız / taşımanız ve paketi / configFile ile çağırmanız gerekir. Bu yeterli değilse ve yeni yapılandırma dosyasını bile geçersiz kılmak istiyorsanız, / SET değişkenini kullanın. Veya herhangi bir yapılandırma dosyasını atlayabilir ve toplu çağrıda / SET deyimlerini kullanabilirsiniz.

Umarım bu olasılıklarınıza biraz ışık tutacaktır.


Bu yüzden büyük sorunlardan biri gibi geliyor, geliştirme kutusundaki yolumun yürütme sırasında sunucuda taht ile aynı olması, böylece paketteki config yolunun her zaman geçerli olması.
Cade Roux

Bu yüzden Dev, Test ve Prod'um olmalı, paketin her zaman Dev'i işaret etmesini ve asla Sunucumda bir Dev yapılandırmasına sahip olmam gerektiğini düşünüyorum ve sonra sunucuda birden fazla yapılandırma yapabilir ve irade'den farklı yapılandırmalara karşı çalışabilirim. Paketteki Dev config hiçbir zaman bulunmaz. Bu yüzden Dev config kullanarak hata ayıklayabilirim, ama sonra dev kutusundaki komut satırından çalıştırırken sorun yaşayacağım çünkü bu dev config'i bulacak.
Cade Roux

Bunun gerçekten olması gerekenden çok daha karmaşık olduğunu kabul ettiğinizi varsayıyorum, değil mi? Sanki 2008'deki değişiklikte yeni bir küçük özellik (yeniden yükleme) var, ancak paket yapılandırmalarının en yaygın kullanım senaryosunu öldürdüler.
Cade Roux

EVET, katılıyorum olması gerekenden daha çirkin. Her zaman orijinal yapılandırma dosyasını yeniden adlandırmayı unutmuşum çünkü bunu anlamak çok zamanımı aldı :-). Aşağıdaki sırayla olmasını isterdim: SET, / configFile, orijinal config, iç paket değeri. Benim için daha anlamlı olurdu ..
Marian

Okuduğum makalelerin hiçbiri sorunun orijinal bir yapılandırma olan orijinal yapılandırma dosyasının gerçekten bahsettiğinden bahsetmiyor. Şimdi neden bu SSIS Paket Düzenleyicisini yayınladıklarını görüyorum, böylece teklifleri açmanıza gerek kalmadan paketin içinde değiştirebilirsiniz.
Cade Roux
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.