Konfigurasi Paket SSIS 2008 diabaikan

10

Dengan perubahan ke konfigurasi paket pada 2008 dibandingkan dengan 2005 ketika saya menentukan / ConfigFile something.dtsConfig pada baris perintah, variabel yang ditentukan dalam paket menjaga nilai desain-waktu alih-alih menggunakan pengaturan dari file konfigurasi.

Saya tidak yakin saya mengerti BAGAIMANA untuk mendapatkan file konfigurasi eksternal untuk digunakan sama sekali. Saya telah membaca artikel yang mengatakan bahwa hanya konfigurasi desain-waktu yang ditetapkan akan menimpa beban file eksternal. Apakah ini berarti saya dapat mengubah variabel menjadi string kosong dan kemudian mereka akan ditimpa? Saya tidak dapat menghapus variabel sepenuhnya! Bagaimana dengan bilangan bulat?

Saya telah melihat artikel yang menyebutkan mematikan dengan menggunakan konfigurasi paket dalam paket.

Saya dapat menggunakan Editor Paket SSIS atau editor XML untuk mengubah jalur file konfigurasi dalam paket, dan kemudian akan menggunakan pengaturan file itu "terakhir" (terlepas dari opsi eksternal / ConfigFile), tetapi saya tidak ingin menjadi mengubah paket. Saya ingin satu paket dengan Test.dtsConfig dan Production.dtsConfig dan dapat bertukar bolak-balik tanpa mengubah paket.

Apa cara yang disarankan untuk melakukan ini sekarang?

Cade Roux
sumber
1
Anda mungkin merasa lega di sini , di forum SQLServerCentral. Beberapa penjelasan tentang perubahan perilaku ada di sini - bagian Perubahan Perilaku Terkait dengan Konfigurasi Paket.
Marian
Silakan lihat file-file berikut, untuk memiliki ide tentang paket dan konfigurasi apa yang saya bicarakan: Konfigurasi dan kumpulan , paket Tes dan Readme .
Marian

Jawaban:

10

Anda harus mempertimbangkan bahwa ketika dijalankan oleh BIDS paket akan mengambil nilai variabel dari file konfigurasi terlebih dahulu, dan hanya jika file config tidak ada, itu akan melemparkan peringatan dan nilai akan diambil dari paket.

Sekarang, situasi di baris perintah agak berbeda. Anda dapat memiliki situasi berikut:

  1. jalankan paket dalam cmd line tanpa memilih file config:

    dtExec /file "e:\Work\TestPackageConfiguration\TestPackageConfiguration\TestPackage.dtsx"
    • jika file konfigurasi asli (beri nama Prod) tidak ada di jalur yang sama yang didefinisikan dalam metadata paket, nilai-nilai dari dalam paket digunakan dan Anda hanya akan menerima peringatan bahwa file config hilang;
    • jika file konfigurasi asli ada dan valid, maka nilai dari file konfigurasi akan digunakan (nilai dalam akan dilewati);
  2. jalankan paket dalam cmd line tanpa memilih file config, tetapi dengan variabel yang diatur dalam panggilan:

    dtExec /file "e:\Work\TestPackageConfiguration\TestPackageConfiguration\TestPackage.dtsx" /SET \Package.Variables[checkMe];"outside the package in cmd line"
    • jika file konfigurasi asli tidak ada, maka nilainya diambil dari panggilan paket / SET;
    • jika file konfigurasi asli benar-benar ada, maka nilai diambil dari file konfigurasi dan bahkan / SET diabaikan (ini hanya digunakan dalam kasus di atas);
  3. jalankan paket dalam cmd line dengan file config baru (misalkan DEV sebagai gantinya Prod):

    dtExec /file "e:\Work\TestPackageConfiguration\TestPackageConfiguration\TestPackage.dtsx" /configFile "c:\ETL Config\TestPackage_config_Dev.dtsConfig"
    • jika file config (Dev) baru ada, dan yang lama (Prod) tidak, maka nilai dari itu digunakan;
    • jika kedua file konfigurasi Dev dan Prod ada, maka hanya nilai-nilai dari Prod yang digunakan (DEV dilewati bahkan jika ditentukan dalam panggilan baris perintah);
  4. jalankan paket dalam cmd line dengan file konfigurasi baru dan pernyataan SET dalam panggilan:

    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"
    • jika kedua file konfigurasi ada, Prod akan digunakan, semua yang lain diabaikan, bahkan SET;
    • jika tidak ada file config, nilai SET akan digunakan;

Jadi, singkatnya, jika Anda ingin menggunakan file konfigurasi baru Anda harus mengganti nama / memindahkan yang lama dan memanggil paket dengan / configFile. Jika itu tidak cukup dan ingin mengganti bahkan file konfigurasi baru, maka gunakan variabel / SET. Atau Anda dapat mem-bypass file konfigurasi apa pun dan hanya menggunakan / SET pernyataan dalam panggilan batch.

Semoga itu akan menjelaskan kemungkinan Anda.

Marian
sumber
Jadi sepertinya salah satu masalah besar adalah jalur saya di kotak pengembangan identik dengan yang ada di server selama eksekusi sehingga jalur ke konfigurasi dalam paket selalu valid.
Cade Roux
Jadi saya pikir saya harus memiliki Dev, Test dan Prod, memiliki paket selalu menunjuk ke Dev dan tidak pernah memiliki konfigurasi Dev di Server saya dan kemudian saya dapat membuat beberapa konfigurasi di server dan dapat menjalankan terhadap konfigurasi yang berbeda sesuka hati sejak Konfigurasi konfigurasi dalam paket tidak akan pernah ditemukan. Jadi saya dapat men-debug menggunakan konfigurasi Dev, tetapi kemudian saya akan kesulitan menjalankannya dari baris perintah pada kotak dev karena ia akan menemukan konfigurasi dev itu.
Cade Roux
Saya berasumsi Anda setuju bahwa ini benar-benar jauh lebih kompleks dari yang seharusnya, bukan? Seperti mereka mendapat satu fitur baru (reload) dalam perubahan ke 2008 tetapi membunuh skenario penggunaan paling umum dari konfigurasi paket.
Cade Roux
Ya, saya setuju itu jauh lebih jelek dari yang seharusnya. Butuh banyak waktu untuk memikirkannya, karena saya selalu lupa untuk mengganti nama file konfigurasi asli :-). Saya lebih suka berada dalam urutan sebagai berikut: SET, / configFile, konfigurasi asli, nilai paket batin. Akan lebih masuk akal bagi saya ..
Marian
Tak satu pun dari artikel yang saya baca benar-benar menyebutkan bahwa itu adalah file konfigurasi asli yang dapat diakses yang merupakan banyak masalah. Sekarang saya mengerti mengapa mereka menerbitkan Editor Paket SSIS sehingga Anda dapat mengubahnya dalam paket tanpa harus membuka BIDS.
Cade Roux