2009-01-12 15 views

cevap

14

AFAIK, SSIS'deki görevler hata durumunda başarısız. Bu nedenle, SQL Görevinizi Yürütme Göreviniz böyle bir ifadeye sahipse:

declare @count int 
select @count = select count(*) from my_table 
if @count < 1000 
begin 
    raiserror('Too few rows in my_table',16,1) 
end 
else 
begin 
    -- Process your table here 
end 

İstediğiniz sonuçları almalısınız.

+0

Ayrıca doğru paket özellikleri ayarlamak zorunda ve olurdu muhtemelen 'failparentonerror' – ConcernedOfTunbridgeWells

+1

raiserror ('my_table içinde çok az satırlarda' set, 16,1 Bu hile yapar! Sanırım bir SSIS sorusu ve daha çok bir SQL sorusu değildi. Teşekkürler. –

+0

Hatanın yeterince yüksek olması gerektiğini unutmayın, örneğin “raiserror ('my_table'da çok az satır var, 1,1)' işe yaramaz –

2

FailPackageOnFailure özelliği için FailPackageOnFailure özelliğini true..try yapmalısınız. Özel bir görev için FailPackageOnFailure özelliğini kullanın ve doğru değeri atayın. böylece paket başarısız olacak.

2

Sen Daha sonra RAISERROR kullanarak bu hatayı() Sen şiddeti için 18 büyük bir sayı girmeniz gerekir

Raiserror (55555,20,-1) WITH LOG 

çağırabilir bu

EXEC sp_ADDMESSAGE 
     @msgnum=55555, 
     @severity=1, 
     @msgtext='Threshold condition failed. The package execution has been terminated.' 

gibi özel bir hata mesajı oluşturabilir (burada 20). Bunun için yönetici ayrıcalıklarına sahip olmanız gerekiyor. Ve unutmayın LOG GİBİ

8

Bir komut dosyası görevi kullanarak bir hataya zorlamak isterim. Bu gerçekten kolay.

Dts.TaskResult = (int)ScriptResults.Failure; 

için

Dts.TaskResult = (int)ScriptResults.Success; 

ve oraya gidin:

1) komut dosyası görevi

2) den otomatik oluşturulan kod satırı değiştirin ekleyin!

0
  1. Bir kullanıcı değişkeni oluşturun. Kayıt sayısının o değişkene (Kullanıcı :: Rcnt)
  2. 'da saklanması Posta gönder görevini kullanın ve iş akışını tanımlayın. emsal kısıtı olarak
  3. (Kullanıcı :: Rcnt < 20)
İlgili konular