SQL Server'da uzun süren sorguları izlemenin en iyi yolu nedir?


10

Benim veritabanı için oldukça uzun çalışan sorgular (dizinleri yeniden oluşturma, büyük veri kümelerini güncelleştirme) çalıştırmak zorunda. Sorguyu SQL Server Management Studio'da çalıştırmanın ve her saat başı kontrol etmenin bir alternatifi var mı? Tamamlandığında e-postayla gönderilmek veya bir mesaj göndermek istiyorum, ancak bunun için en iyi aracı bilmiyorum.

Yanıtlar:


4

Gaius yazısının ardından: Komut dosyasının önündeki db'yi kullanarak ihtiyacınız olanı yapan bir .SQL komut dosyası oluşturabilirsiniz -> komut dosyasını çağıran İşletim sistemi türünde bir SQL Agent işi oluşturun:

sqlcmd -E -S SUNUCUSU -i "c: \ YOURSCRIPT.sql" -o "C: \ YOURSCRIPT_LOG.log"

Yeni adım ekleyin ve e-posta göndermek için msdb.dbo.sp_send_dbmail prosedürünü kullanın. Bu özellik, komut dosyasının yürütülmesini onaylamak için SQL tablolarından belirli bir sorguyu posta içinde görüntülemek üzere özelleştirilebilir ... örneğin yeniden oluşturma dizinlerinizin dbcc showcontig'i.


1

SQL işlerini kullanma seçeneğiniz var mı? Orada bildirimler ve benzeri işlemler yapabilirsiniz. Aralıklı bildirimler alıncaya kadar, saklı yordamlar vb. İçinde bazı kodlar gerekir.


1

Evet, sadece xp_sendmail kullanın . Önceden ayarlanmış bir mesajı veya bir SQL ifadesinin sonuçlarını kolayca kolayca gönderebilirsiniz. Bu özellik ancak içinde eskitiliyor olması nedeniyle, SQL Server 6.5 beri mevcuttur Denali - Bu operasyonun kalıcı bir parçası olacak, o zaman kullanmalısınız Veritabanı posta çok daha "kurumsal" dır.


1

Her zaman bir "EventLog" tablosuna mesaj yazarım. Büyük miktarda veri işlerken, verileri yığınlar halinde yönetiyorum ve her yığından sonra EventLog'a durum güncellemeleri yazıyorum.

Uzun süren işlemin ilerleme durumunu kontrol etmek istediğimde, sadece EventLog tablosunu sorgularım.

Çıktı örneği:

-------------------
- Büyük Güncellemem -
-------------------
Başladı: 2011-05-03 10:00:00

İşlenecek Kayıtlar: 1.000.000
Parçalar: 200

- Parça 1 ---
MyTable'ı güncelleme girişimi
Güncelleme Kayıtları: 5000
Kalan Kayıtlar: 995.000
Verim: Saniyede 4210 kayıt

--- Parça 2--
MyTable'ı güncelleme girişimi
Güncelleme Kayıtları: 5000
Kalan Kayıtlar: 990.000
Verim: Saniyede 3555 kayıt

--- 3.
vb.

Ayrıca EventLog tablosunda iletinin ne zaman yazıldığını, iletiyi hangi işlemin yazdığını vb. İzlemek için sütunlar var. Örneğime bu bilgileri dahil etmediğim için üzgünüm.

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.