MS SQL Studio'da sorguyu her saat otomatik olarak yürüt


13

Büyük bir kuruluştaki bir uygulamayı destekliyorum, rollerimden biri verileri temizlemek. Her saat çalıştırmam gereken bir sorgu var ve bunu otomatikleştirmek istiyorum. Kuruluş ilkeleri nedeniyle SQL Server Agent işleri oluşturamıyorum veya şemayı değiştiremiyorum, yalnızca verileri değiştirebiliyorum.

Sonsuz

WHILE(1=1)
BEGIN 
WAITFOR DELAY '01:00';
--do work
END

işi benim için yapıyor, ama perma-açık bir bağlantı düşüncesiyle omuz silkiyorum.

İdeal olarak, her saatte belirli bir kod parçasını yürütmek için MS SS'nin komut dosyasını alırdım, ancak bunun mümkün olup olmadığından emin değilim.

Bu sorunun çözümü var mı?


1
PC'nizde Windows Sceduler kullanabilir misiniz?
Sepupik

12
Sizin için planlama izni olan birine sorun.
Bay Magoo

@sepupic MS SS'deki hiçbir şey bana yardımcı olamazsa, bu benim bir sonraki araştırma alanım.
Ivan Koshelev

Katılıyorum. İstemci bilgisayarımda döngü kodunu çalıştırmak çok rahatsız hissederdim. PC'niz çöktüyse, bazıları fişini çekti vb. SQL işlerinin uygulama ekipleri için kullanılamadığı benzer ortamlarda çalıştım - çünkü AutoSys veya bir uygulama sunucusunda çalışan başka bir zamanlama aracı kullanma seçeneğimiz vardı . Diğer zamanlanmış görevlerin nasıl yönetildiğini öğrenmeye çalışın. Başka bir geçici çözüm SQL Server Reporting Services kullanmak olabilir ? İdeal değil biliyorum ...
Terry C

9
Doğru çözüm, DBA'lara gitmek ve bu temizliği saatlik çalıştırmak için bir SQL Server Agent işi oluşturmalarını sağlamaktır. Daha sonra veritabanında neden "temizleme" gerektiren veriyi bu kadar sık ​​aldığınızı öğrenin ve bunu düzeltin.
alroc

Yanıtlar:


22

Arkadaşınız sqlcmd (Microsoft Technet)

  1. Temizleme işinizi çalıştırmak için gerekli komut dosyasıyla bir SQL dosyası oluşturun
  2. Komut dosyasını sqlcmd.exe ve gerekli parametrelerle çalıştırın
  3. Bir Windows Zamanlanmış Görev oluşturun ve gerekli tüm parametreleri içeren komutu ekleyin

Örneğin

sqlcmd -d YOUR_DB -E -i YOUR_SCRIPT.SQL -o OUTPUTFILE.TXT 

İyi şanslar.


4
Bu komut dosyalarının, geliştirme bilgisayarı yerine Zamanlanmış Görev ile birlikte uygun bir uygulama / araç sunucusuna yerleştirildiğinden emin olun.
GER

7

Sorguları yürütmek için Management Studio gerekmez.

Birisinin sizin için bir iş planlaması yapma seçeneğiniz yoksa, hot2use'un cevabında belirtildiği gibi sqlcmd'ye bakmalısınız.

Desteklenmeyen bir sürümdeyseniz (bir sürüm belirtmediğiniz için) bir komut satırı istemcisi olan osql de vardır , ancak bu araç kullanımdan kaldırılmıştır.

Daha sonra istediğiniz herhangi bir zamanlayıcıyı (örneğin Windows Görev Zamanlayıcısı) kullanarak bir komut zamanlayabilir ve şöyle bir şey çalıştırabilirsiniz:

OSQL -E -i c:\temp\dowork.sql

Sunucu seçimi ve kimlik doğrulaması için hangi seçeneklere sahip olduğunuzu görmek için belgelere bakın.


-1

MS SQL stüdyosunda bulunan "SQL Server Agent" ı (nesne gezgininde sunucunuzu genişletin ve normalde listenin altında olması gerekir) muhtemelen en iyi seçenektir.

Bu, belirlenen aralıklarda yürütülecek şekilde ayarlanabilecek bir iş oluşturur. İşler, istemci yerine sunucuda bir hizmet olarak çalışır. Bu, istemcinizin bağlantısını keserse çalışmaya devam edeceği ve sunucu yeniden başlatılırsa (bilinmeyen bir nedenden dolayı), işi yeniden başlatmanıza gerek kalmadan çalışmaya devam eder.

Dezavantajı, bunu yapabilmek için muhtemelen yüksek erişim haklarına ihtiyacınız olacaktır.


3
Muhtemelen şu soruyu göz ardı ettiniz: Organizasyon politikaları nedeniyle SQL Server Agent işleri oluşturamıyorum [...]
Andriy M

@Andriy: Hala doğru cevap. İnsanların organizasyonlarının isteklerine BT sayaçlarını gölgelendirmelerine yardımcı olmamalıyız.
Dylan Knoll

1
@DylanKnoll: Bence yanıt veren için OP'nin politikadan bahsettiğini kabul etmenin ve aptallığına karşı argümanlar içermesinin mükemmel bir anlamı olacağını düşünüyorum (örneğin, yorum satırlarında bir şey), ama "yardım etmemelisin"? Önerilen ve kabul edilen seçenek çok iğrenç görünmüyor, bu yüzden ilkelere bağlı kalmak bu durumda biraz sert görünecek.
Andriy M

Ben de sizin fikrinizi anlıyorum, ama ya DBA'lar bakış açısı? Birisi DB tasarımındaki hataları gizlemeye çalışıyor gibi görünüyor, bu yüzden ışığa getirilmiyorlar.
Dylan Knoll

1
"SQL Server Agent işleri" olarak değiştirilmeden önce "SQL server işler" i okudu. Birincisi için ikincisinden başka bir anlam olabileceğini düşünmüyorum. (Bu arada düzenleyen OP değildi; hafif hatalı terimi tam olarak benim yaptığım şekilde anlayan ve düzelten bir kişiydi.) Orijinal ifadenin göz ardı edilmesi daha da kolay, bu nedenle, şu ya da bu şekilde, hala senin yanında bir gözetim olduğunu düşünüyorum :)
Andriy 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.