Pekerjaan Chaining SQL Server Agent

9

Saya memiliki beberapa paket kerja untuk masing-masing saya menyiapkan pekerjaan di agen server sql. Terkadang saya harus berlari bersama. Apa cara terbaik untuk menjalankan semuanya dalam urutan tertentu? Saya sedikit terkejut bahwa agen server sql tidak dapat memasukkan pekerjaan sebagai langkah-langkah pekerjaan yang akan dieksekusi. Saya sudah mencoba

nojetlag
sumber
1
+2 Saya memikirkan ini tadi malam :)
jcolebrand
1
apakah masing-masing barang Anda harus merupakan pekerjaan yang terpisah? Mungkinkah mereka diatur ke dalam pekerjaan utama dengan langkah-langkah pekerjaan terpisah dan untuk setiap langkah pekerjaan tambahkan t-sql atau logika lain yang menentukan apakah langkah tersebut harus dijalankan dan bagaimana (misalnya jika (kondisi = benar) melakukan pekerjaan lain tidak melakukan apa-apa.
johndacostaa
Terima kasih semuanya telah memberi saya bantuan, sepertinya Aarons menyarankan cara untuk mendapatkan yang paling dekat dengan yang saya butuhkan. Saya akan melihat apakah saya mendapatkan izin untuk alat untuk melakukannya, jika tidak dalam SQL Agent saya harus membuat pekerjaan monster :(.
nojetlag
Anda mengatakan "paket", maksud Anda paket SSIS?
SqlSandwiches
setuju dengan John DaCosta. Gunakan langkah-langkah dengan ketentuan.
Alex_L

Jawaban:

5

Ada alat pihak ke-3 di luar sana yang akan memungkinkan Anda untuk melakukan ini, jika Anda tidak memiliki waktu kurva pembelajaran atau keahlian yang ada untuk menggunakan SSIS. Penafian: Saya bekerja untuk salah satu perusahaan itu. Lihat Event Manager dari SQL Sentry - ia menangani pekerjaan SQL Server (termasuk paket SSIS), Tugas Terjadwal Windows, dan bahkan pekerjaan Oracle. Berikut adalah fitur-fitur SQL Server (termasuk chaining dan antrian):

http://sqlsentry.net/event-manager/sql-server-enterprise-features.asp

Sayangnya saya tidak berpikir Anda akan dapat menggunakan SQL Agent sendiri untuk rantai beberapa pekerjaan. Metode sp_start_job yang disarankan Marian memulai pekerjaan secara serempak; Anda tidak bisa menunggu sampai selesai sebelum melanjutkan ke perintah berikutnya atau langkah berikutnya.

Aaron Bertrand
sumber
Umm, saya pikir dia bisa query tabel sistem msdb, dan memiliki status pekerjaan lain (dan langkah-langkahnya) status. Jika saya salah, saya akan meminta maaf dan memberi Anda 6 paket untuk mengungkapkan ini :-).
Marian
Tidak mengerti maksud Anda. Bagaimana kueri tabel msdb akan membantunya berantai pekerjaan bersama? SAAT 1 = 1 sampai statusnya berubah? Pemberitahuan pertanyaan? Tentu ada banyak cara Anda dapat melakukan ini secara manual, tetapi itu akan menjadi heck yang jauh lebih kompleks daripada hanya memanggil sp_start_job.
Aaron Bertrand
8

Agen SQL tidak dianggap sebagai "kelas perusahaan" sebagai penjadwal pekerjaan. Itu tidak memiliki banyak fungsi yang Anda akhirnya harus membangun sendiri. Salah satu contohnya adalah dependensi. Akibatnya Anda terpaksa memasukkan sebagian besar logika ini ke dalam paket SSIS. Belum tentu hal yang buruk ... hanya rasa sakit untuk membangun dan mengelola diri sendiri.

Jadi, itulah jawaban saya, buat paket SSIS dan gunakan beberapa perintah t-sql untuk memanggil pekerjaan SQL Agent seperti yang diinginkan. Pastikan Anda memiliki persyaratan dan skenario yang jelas. Misalnya, Anda mungkin tidak ingin memiliki banyak pekerjaan yang mengenai tabel yang sama.

HTH

SQLRockstar
sumber
Konyol saya mengharapkan penjadwal "perusahaan" dalam produk "Edisi Perusahaan" yang matang :). Saya memiliki harapan karena saya dapat memasukkan banyak hal sebagai langkah, lucu bahwa yang paling jelas (pekerjaan lain) tidak tersedia sebagai objek yang dapat dieksekusi. Saya menggunakan pekerjaan untuk menjalankan paket SSIS yang memiliki banyak kompleksitas, harus membangun paket SSIS lain untuk menjalankan pekerjaan secara fleksibel tampaknya bukan pendekatan yang tepat bagi saya. Terutama karena saya akan berakhir lagi dengan asynch sp_start_job.
nojetlag
6

Anda harus mencoba dengan menggunakan skrip T-SQL dalam langkah-langkah pekerjaan Anda, menggunakan prosedur tersimpan sistem sp_start_job . Ini akan memungkinkan Anda untuk rantai berapa banyak pekerjaan yang Anda inginkan.

Marian
sumber
Seperti disebutkan oleh Aaron, itu tidak akan memungkinkan saya untuk menjaga urutan yang diberikan, karena mereka semua akan menembak hampir pada saat yang sama (karena fakta bahwa mereka tidak tahu apa-apa). Jadi ini bukan pendekatan chaining, melainkan pendekatan pengumpulan :)
nojetlag
Ok, mungkin itu tidak terlalu mudah, tetapi Anda masih bisa query tabel sistem msdb, Anda bisa menunggu waktu tertentu .. lalu query lagi. Atau Anda dapat membuat tabel pelacakan tempat Anda meletakkan status langkah-langkah pekerjaan dan berdasarkan pemicu di atasnya Anda dapat secara otomatis menjalankan langkah-langkah berikutnya. Atau Anda dapat membeli alat yang melakukan itu dan menambahkan nilai lebih dan juga menunjukkan UI mewah :-). Ada pilihan untuk setiap orang ..
Marian