SQL Server Agent İşlerini Zincirleme


9

Ben sql sunucu aracısında bir iş kurmak her için birkaç çalışma paketleri var. Bazen hep birlikte koşmalıyım. Hepsini belirli bir sırada çalıştırmanın en iyi yolu nedir? Biraz sql sunucu aracısı yürütülecek iş adımları olarak işleri dahil edemez biraz şaşırdım. Denedim


1
+2 Bu gece hakkında düşünüyordum :)
jcolebrand

1
öğelerinizin her biri ayrı bir iş olmalı mı? Ayrı iş adımları ile ana bir işe kurulabilirler ve her iş adımı için adımın çalıştırılıp çalıştırılmayacağını ve nasıl yapılacağını (örn. (Koşul = true) başka bir şey yapmazsa) belirleyen t-sql veya başka bir mantık ekleyin.
johndacostaa

Bana yardım ettiği için herkese teşekkürler, Aarons'un yolun ihtiyacım olana en yakın olanı önerdiği anlaşılıyor. Bir aracı yapmak için izin alıp alamayacağımı göreceğim, aksi takdirde SQL Agent içinde bir canavar işi yapmak zorunda kalacağım :(.
nojetlag

"Paketler" diyorsun, SSIS paketleri mi demek istiyorsun?
SqlSandwiches

John DaCosta ile anlaştı. Koşullu adımları kullanın.
Alex_L

Yanıtlar:


5

Öğrenme eğrisi süreniz veya SSIS kullanmak için mevcut uzmanlığınız yoksa, bunu yapmanıza izin verecek 3. taraf araçları vardır. Feragatname: Bu şirketlerden birinde çalışıyorum. SQL Sentry'ye bakın - SQL Server işlerini (SSIS paketleri dahil), Windows Zamanlanmış Görevleri ve hatta Oracle işlerini işler. SQL Server özellikleri (zincirleme ve kuyruklama dahil):

Ne yazık ki birden fazla işi zincirlemek için SQL Agent'ı kendi başınıza kullanabileceğinizi sanmıyorum. Marian'ın önerdiği sp_start_job yöntemi işleri zaman uyumsuz olarak başlattı; bir sonraki komuta veya bir sonraki adıma geçmeden önce bunların tamamlanmasını bekleyemezsiniz.


Umm, sanırım msdb sistem tablolarını sorgulayabilir ve diğer işlerin (ve adımlarının) durumu var. Eğer yanılıyorsam, özür dileyeceğim ve bunu ortaya çıkarmak için 6 paket vereceğim :-).
Marian

Ne demek istediğini anlamıyorum. Nasıl msdb tabloları sorgulama işleri birlikte zincirleme yardımcı olacak? Durum değişinceye kadar 1 = 1. Bildirimler sorgulansın mı? Elbette bunu manuel olarak yapabileceğiniz birçok yol var, ancak sp_start_job'u çağırmaktan çok daha karmaşık bir halt olacak.
Aaron Bertrand

8

SQL Agent, bir iş zamanlayıcı olarak "kurumsal sınıf" olarak kabul edilmez. Kendinizi inşa etmek zorunda olduğunuz birçok işlevsellikten yoksundur. Böyle bir örnek bağımlılıklar olacaktır. Sonuç olarak, bu mantığın çoğunu SSIS paketlerine koymak zorunda kalırsınız. Mutlaka kötü bir şey değil ... sadece kendinizi inşa etmek ve yönetmek için bir acı.

Bu benim cevabım, bir SSIS paketi oluşturun ve SQL Agent işlerini istediğiniz gibi çağırmak için bazı t-sql komutlarını kullanın. Gereksinimlerinizi ve senaryolarınızı açıkça tanımladığınızdan emin olun. Örneğin, aynı tablolara aynı anda isabet eden birden fazla işiniz olmasını istemeyebilirsiniz.

HTH


Aptal bana böyle olgun bir "Enterprise Edition" ürün bir "kurumsal" zamanlayıcı bekliyor :). Ben bir adım olarak, en bariz (başka bir iş) yürütülebilir nesne olarak mevcut olmayan komik şeyler bol dahil edebilirsiniz umut vardı. İşleri bol karmaşıklığı olan SSIS paketlerini çalıştırmak için kullanıyorum, işleri esnek bir şekilde yürütmek için başka bir SSIS paketi oluşturmak zorunda kalıyorum bana doğru bir yaklaşım değil. Özellikle de as_sch sp_start_job ile tekrar sona ereceği için.
nojetlag

6

Sp_start_job sistem saklı yordamını kullanarak, işlerinizin adımlarında bir T-SQL komut dosyası kullanarak denemelisiniz . İstediğiniz kaç işi zincirlemenize olanak tanır.


Aaron'un belirttiği gibi, belirli bir diziyi tutmama izin vermiyor, çünkü hepsi neredeyse aynı anda ateşleyecekler (asenkron oldukları için). Bu gerçekten zincirleme bir yaklaşım değil, bir koleksiyon yaklaşımı :)
nojetlag

Tamam, belki de çok basit değil, ama yine de msdb sistem tablolarını sorgulayabilirsiniz, belirli bir süre bekleyebilirsiniz .. sonra tekrar sorgulayın. Veya iş adımlarının durumunu koyduğunuz bir izleme tablosu oluşturabilir ve bunun üzerine bir tetikleyiciye dayanarak sonraki adımları otomatik olarak başlatabilirsiniz. Ya da bunu yapan ve biraz daha değer katan ve aynı zamanda süslü kullanıcı arayüzü :-) gösteren bir araç satın alabilirsiniz. Her biri için seçenekler var ..
Marian
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.