Bu eski soru daha kapsamlı bir cevabı hak ediyor. Bunlardan bazıları buradaki diğer cevaplarda / yorumlarda belirtilmiştir, diğerleri OP'nin kendine özgü durumu için çalışabilir veya çalışmayabilir, ancak saklanan procs'leri SQL'den eşzamansız olarak aramak isteyen başkaları için de çalışabilir.
Sadece tamamen açık olmak: TSQL yapar değil (kendi başına) uyumsuz diğer TSQL harekat düzenleme yeteneğine sahip .
Bu hala çok fazla seçeneğiniz olmadığı anlamına gelmez:
- SQL Agent işleri : Birden fazla SQL işi oluşturun ve bunları istenen zamanda çalışacak şekilde zamanlayın veya bunları kullanarak proc kullanılarak depolanan "ana kontrol" den asenkron olarak başlatın
sp_start_job
. İlerlemelerini programlı olarak izlemeniz gerekiyorsa, işlerin her birinin özel bir JOB_PROGRESS tablosu güncellediğinden emin olun (veya Gregory A. Larsen tarafından bu mükemmel makaledexp_sqlagent_enum_jobs
açıklandığı gibi belgelenmemiş işlevi kullanarak henüz tamamlanmamış olup olmadıklarını kontrol edebilirsiniz ). Aynı saklı işlemi farklı parametrelerle çalıştırsalar bile, paralel işlemlerin çalışmasını istediğiniz kadar ayrı iş oluşturmanız gerekir.
- SSIS Paketi : Daha karmaşık asenkron senaryolar için, basit bir dallanma görev akışına sahip bir SSIS paketi oluşturun. SSIS, bu görevleri SQL'in paralel olarak uygulayacağı bireysel spidslerde başlatacak. SSIS paketini bir SQL aracı işinden çağırın.
- Özel uygulama : İstediğiniz dilde (C #, Powershell, vb.), O dilin sağladığı asenkron yöntemleri kullanarak basit bir özel uygulama yazın. Her uygulama iş parçacığında bir SQL saklı proc arayın.
- OLE Otomasyonu : SQL'de,
sp_oacreate
ve bu makaledesp_oamethod
açıklandığı gibi, depolanan proc'ları , Gregory A. Larsen tarafından çağıran yeni bir işlem kullanın ve başlatın .
- Hizmet Aracısı : kullanarak içine bak Service Broker , bir bu makalede asenkron yürütme iyi bir örnek .
- CLR Paralel Yürütme : CLR komutlarını
Parallel_AddSql
ve bu makalede Alan Kaplan tarafından Parallel_Execute
açıklanan şekilde kullanın (yalnızca SQL2005 +).
- Zamanlanmış Windows Görevleri : Tamamlanmak üzere listelenmiştir, ancak bu seçeneğin hayranı değilim.
Ben olsaydım, muhtemelen daha basit senaryolarda birden fazla SQL Agent İşi ve daha karmaşık senaryolarda bir SSIS paketi kullanırdım.
Senin durumunda, SQL Agent işlerini aramak, basit ve yönetilebilir bir seçim gibi geliyor.
Son bir yorum : SQL, yapabildiği her seferinde bireysel işlemleri paralel hale getirmeye çalışıyor *. Bu, birbiri ardına değil, aynı anda 2 görevi yürütmenin, daha erken biteceğinin garantisi değildir. Bir şeyi gerçekten iyileştirip iyileştirmediğini görmek için dikkatlice test edin.
Aynı anda 8 görevi çalıştırmak için bir DTS paketi oluşturan bir geliştiricimiz vardı. Ne yazık ki, sadece 4 işlemcili bir sunucuydu :)
* Varsayılan ayarları varsayarak. Bu, sunucunun Maksimum Paralellik Derecesi Derecesi veya Affinity Maskesi değiştirilerek veya MAXDOP sorgu ipucu kullanılarak değiştirilebilir.