Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Bagaimana cara mengubah variabel di SSIS?

Seperti yang dicatat oleh @Yuck dan @devarc, ada dua nilai yang berbeda dan berbeda Variabel memegang. Nilai Design-time adalah nilai yang Anda tetapkan saat variabel pertama kali dibuat. Dalam kasus Anda, variabel memegang C:\Test.txt sebagai nilai waktu desain. Setiap kali Anda membuka paket, itu akan menunjukkan C:\Test.txt sampai Anda mengubahnya di

Untuk membuat nilai variabel berubah saat paket sedang berjalan, pilihan Anda adalah menyetel nilai atau menghitungnya. Di sini saya telah membuat variabel tingkat paket CurrentFile dengan nilai C:\Test.txt

Satu hal yang sering membuat orang tersandung adalah bahwa mereka telah mengubah nilai run-time dengan benar tetapi ketika mereka menjalankannya di BIDS, mereka melihat nilai "lama". Nilai yang ditampilkan di jendela Variabel tidak berubah selama eksekusi paket.

Selama eksekusi paket, jendela Variabel saya masih menunjukkan nilai waktu desain (C:\Test.txt) tetapi nilai sebenarnya tercermin di jendela Lokal (C:\Test2.txt)

Menetapkan nilai

Nilai hampir semua hal di SSIS dapat ditetapkan saat run-time melalui serangkaian verbose opsi baris perintah atau melalui konfigurasi sumber. Perbedaan terbesar dalam pikiran saya adalah bahwa pendekatan ini adalah bahwa nilainya akan selalu menjadi nilai untuk seluruh masa eksekusi paket. Pemanggilan paket secara berurutan atau paralel dapat mengubah nilai itu tetapi untuk itu eksekusi nilai akan tetap konstan (kecuali modifikasi eksplisit dari nilai.

/SET

Eksekusi baris perintah (dtexec.exe), mengklik kanan pada paket dan menjalankan dari sistem file (dtexecUI.exe) atau membuat langkah tugas Agen SQL dari Layanan Integrasi SQL Server semuanya memungkinkan untuk memberikan nilai run-time melalui perintah SET . Menggunakan variabel di atas, perintah berikut akan mengatur nilai run-time ke C:\Test2.txt

dtexec /file C:\Generated.dtsx /set \Package.Variables[User::CurrentFile].Properties[Value];"C:\Test2.txt"

Konfigurasi

SSIS menawarkan opsi untuk membuat sumber konfigurasi untuk memberikan nilai run-time ke paket. Artikel yang saya tautkan di atas melakukan pekerjaan yang jauh lebih baik menjelaskan pro dan kontra dari opsi konfigurasi daripada yang akan saya lakukan di sini. Saya akan mengatakan bahwa saya biasanya menggunakan keduanya - perintah SET saya mengonfigurasi manajer koneksi yang kemudian digunakan oleh paket untuk menemukan set konfigurasi paket "lengkap".

Menghitung nilai

Ada berbagai tugas di SSIS yang dapat mengubah nilai variabel serta penggunaan Ekspresi untuk mengubah nilai. Saya melihat ini sebagai hal yang beroperasi pada nilai saat paket dalam penerbangan.

Tugas

Script Task adalah salah satu mekanisme yang paling umum digunakan bagi mereka yang baru memulai, tetapi saya menemukan alat lain di toolkit SSIS biasanya lebih cocok untuk mengubah nilai variabel.

Foreach Loop Container dan Jalankan Tugas SQL adalah dua dari Tugas besar lainnya yang harus Anda perhatikan untuk penetapan nilai variabel.

Ekspresi

Ekspresi adalah permen paling mulia di kotak peralatan SSIS. Hampir setiap "hal" di SSIS memperlihatkan properti untuk konfigurasi. Itu membantu, tetapi menggunakan penetapan ekspresi untuk membangun properti itu luar biasa.

Misalnya, bayangkan 3 variabel RootFolder , FileName dan ComputedCurrentFile dengan nilai C:\, File2.txt dan string kosong. Pada jendela Properties untuk ComputedCurrentFile kami akan mengubah nilai untuk EvaluateAsExpression dari False menjadi True dan kemudian menggunakan ekspresi seperti kelas @[User::RootFolder]+ "\\" [email protected][User::FileName] Itu hanya menggabungkan nilai dua variabel pertama bersama-sama. Ini dapat membantu jika nama file untuk pemrosesan adalah standar tetapi folder sumber sering berubah. Atau jika kita berbicara tentang output, biasanya menggunakan ekspresi untuk membangun nama file output menggunakan tanggal dan mungkin waktu saat paket berjalan.

Akhirnya, tidak ada yang mencegah pencampuran dan pencocokan pendekatan ini. Saya biasanya menggunakan konfigurasi untuk mengarahkan pencacah file ke folder awal yang benar dan kemudian menggunakan nilai yang dihitung untuk mengidentifikasi file saat ini untuk diproses.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara Memilih Setiap Baris Di Mana Nilai Kolom TIDAK Berbeda

  2. Menyiapkan dan Mengonfigurasi Grup Ketersediaan Selalu Aktif di SQL Server

  3. Bagaimana saya bisa memasukkan nilai nol dalam MIN atau MAX?

  4. sql server membagi nilai yang dipisahkan koma menjadi kolom

  5. Mengubah string koneksi secara dinamis