tutter 0 Geschrieben 10. Dezember 2014 Melden Teilen Geschrieben 10. Dezember 2014 Hallo an alle, ich hoffe ich umschreibe das gewünschte Ergebnis richtig. Ich möchte einen Ereignishandler provozieren wenn ein SQL Statement durch eine If-Schleife abgefragte Überprüfung kein Ergebnis ausgibt. Soll heißen es wird durch eine If-Schleife geprüft ob ein Zustand wahr ist oder nicht. Wenn nicht hätte ich gern irgendwas was Task Mail senden veranlasst. Dies klappt ja aber nur wenn ich ein Ereignis habe wie OnTaskfailed oder so aber irgendwie ist das für meine Zwecke nicht das richtige. Kann ich hier irgendetwas provozieren oder wie muss ich vorgehen das ich das Ergebnis der Abfrage dazu nutzen kann den Task Mail senden zu starten? Zitieren Link zu diesem Kommentar
Sunny61 806 Geschrieben 10. Dezember 2014 Melden Teilen Geschrieben 10. Dezember 2014 IF ist keine Schleife, sondern eine Bedingung. Und Du kannst natürlich auch ein ELSE angeben. Zeig doch dein Stück Code das Du schon hast, evtl. kann man dir so besser helfen. Zitieren Link zu diesem Kommentar
tutter 0 Geschrieben 10. Dezember 2014 Autor Melden Teilen Geschrieben 10. Dezember 2014 ja das mit der Bedingung ist natürlich richtig! aber ich denke ich habe das Hauptziel noch nicht klar erläutert. Die If-Bedingung funktioniert und läuft tadellos. Jedoch ist auch genau das das Problem. Wenn die Bedingung erfüllt ist macht er die hinterlegte Anweisung. Ist die Bedingung nicht erfüllt möchte im SSIS den nächsten Schritt machen. (das versenden einer E-Mail) Jedoch brauche ich dazu ein Ereignis und hier finde ich kein passendes da ja meine Bedingung erfüllt ist. Sprich entweder erfüllt oder nicht erfüllt - jedoch kein Abbruch oder irgend ein anderen Fehler den ich im SSIS als Ereignis für den Mail Versand nutzen kann. Hierzu bräuchte ich eben die Lösung! Zitieren Link zu diesem Kommentar
Sunny61 806 Geschrieben 10. Dezember 2014 Melden Teilen Geschrieben 10. Dezember 2014 Wie ich geschrieben hatte, es geht auch die ELSE. http://msdn.microsoft.com/de-de/library/ms182587.aspx http://msdn.microsoft.com/de-de/library/ms182717.aspx http://blog.sqlauthority.com/2013/11/04/sql-server-implementing-if-then-in-sql-server-with-case-statements/ Alternativ natürlich auch ein CASE: http://msdn.microsoft.com/de-de/library/ms181765.aspx Und ja, beides kann man auch kombinieren. ;) Zitieren Link zu diesem Kommentar
tutter 0 Geschrieben 10. Dezember 2014 Autor Melden Teilen Geschrieben 10. Dezember 2014 nein du hast das nicht richtig verstanden! der Source ist nicht das Thema! if year(getdate()) != (select max (cast(substring(CONVERT(varchar(10),[Datum],101),7,4) as numeric)) from [SKEMS-HST-POWER].[dbo].[EnergieMonat] as t1_max where CounterID = t1_max.CounterID) and MONTH(GETDATE()) = (select max (cast(substring(CONVERT(varchar(10),[Datum],101),1,2) as numeric)) from [SKEMS-HST-POWER].[dbo].[EnergieMonat] as t1_max where CounterID = t1_max.CounterID) RAISERROR ('Daten liegen in Quelle nicht vor.',16,1); ELSE SELECT [CounterID] ,[Datum] ,cast(substring(CONVERT(varchar(10),[Datum],101),7,4) as numeric) as Jahr ,cast(substring(CONVERT(varchar(10),[Datum],101),4,2) as numeric) as Tag ,cast(substring(CONVERT(varchar(10),[Datum],101),1,2) as numeric) as Monat FROM [SKEMS-HST-POWER].[dbo].[EnergieMonat] as t1 where year(getdate()) =(select max (cast(substring(CONVERT(varchar(10),[Datum],101),7,4) as numeric)) from [SKEMS-HST-POWER].[dbo].[EnergieMonat] as t1_max where t1.CounterID = t1_max.CounterID) and MONTH(GETDATE()) = (select max (cast(substring(CONVERT(varchar(10),[Datum],101),1,2) as numeric)) from [SKEMS-HST-POWER].[dbo].[EnergieMonat] as t1_max where t1.CounterID = t1_max.CounterID) GO Mit Raiserror gebe ich mir nun eine Selbstdefinierte Fehlermeldung aus! Da es eine Fehlermeldung ist kann ich im SSIS einen Mail Task bei Fehler starten. Dieser Schickt mir dann ein Mail. Das war das Ziel ;) Jedoch stellt sich mir die Frage warum bei if sowohl der if teil (wenn dieser zutrifft) und gleich auch der else Teil durchlaufen wird. Ich merke das an der Durchlaufszeit! diese ist bedeutend höher egal ob der if teil oder der else teil zutrifft! versteh ich nicht! oder habe ich im Skript noch ein Fehler? Zitieren Link zu diesem Kommentar
Sunny61 806 Geschrieben 10. Dezember 2014 Melden Teilen Geschrieben 10. Dezember 2014 Im SSMS kannst Du doch auch debuggen, dann siehst Du recht schnell ob die ELSE auch durchlaufen wird. Häng doch ein RETURN nach den RAISERROR. Dann müsste eigentlich aus dem Script ausgestiegen werden. Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.