Jump to content

SSIS Ereignishandler provozieren


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

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? 

Link zu diesem Kommentar

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!

Link zu diesem Kommentar

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?

Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...