@echo off
cls
:: Dieses Script schaut nach, wie lange es her ist, dass der Worker einen Abgleich gestartet hat
:: wenn ein Abgleich zu lange her ist, bei einer der Plattformen, wird einmalig eine Mail versendet.
:: Emails über das Windows system schreiben -> https://sourceforge.net/projects/blat/files/
:: blat.exe -to <Empfänger> -f <Absender> -u <User> -pw <Passwort> -server <Servername> -s <Betreff> -body <Nachrichtentext> -attacht <Pfad zur angehängten Textdatei>
:: Die Daten eurer Instanz
set INSTANCE=JTLWAWI
set DATABASE=eazybusiness
set PASSWD=sa04jT14
set USER=sa
:: der Pfad in dem Ihr alles laufen lasst
set SAVEPATH=d:\ServerTools\
:: Der Pfad, wo Ihr blat.exe abgelegt habt
set BlatPath=d:\ServerTools\blat\blat.exe
:: eure smtp Daten um eine mail zu senden
set emailTo=xx@domain.de
set emailFrom=xx@domain.de
set emailSubject=Dein Worker mal wieder
set emailSmtp=domain.de
set emailUser=xx@domain.de
set emailPass=myPass
set emailBody=Dein Worker stresst gerade ein wenig, schau mal was da los ist.
:: xx ist die Anzahl an Minuten, ich würde hier eine 30 oder eher 60 setzen da es ja mal sein kann das der Worker mehr zu tun hat, eine "0" überspringt dann die Prüfung dieser Plattform
set maxMinsShop=10
set maxMinsEbay=10
set maxMinsAmazon=10
:: Diese Daten brauchen nicht angepasst zu werden
set DBList=%SAVEPATH%LastStart.txt
set LOCKFILE=%SAVEPATH%errorIsSend.log
set TABLENAME=dbo.tWorkerInfo
set concatShop=CONCAT('letzter Start Shopabgleich: ', Format([dShopStart],'dd-mm-yyyy / hh:mm:ss'), ' - Dies war vor ',DATEDIFF(minute,dShopStart,getdate()), ' Minuten') as shopInformation,
set concatEbay=CONCAT(CHAR(13) + CHAR(10) + 'letzter Start ebayabgleich: ', Format([dEbayStart],'dd-mm-yyyy / hh:mm:ss'), ' - Dies war vor ',DATEDIFF(minute,dEbayStart,getdate()), ' Minuten') as ebayInformation,
set concatAmazon=CONCAT(CHAR(13) + CHAR(10) + 'letzter Start Amazonabgleich: ', Format([dAmazonStart],'dd-mm-yyyy / hh:mm:ss'), ' - Dies war vor ',DATEDIFF(minute,dAmazonStart,getdate()), ' Minuten' ) as amazonInformation
set whereMaxMinShop=(DATEDIFF(minute,dShopStart,getdate()) ">" %maxMinsShop% AND %maxMinsShop% ">" 0)
set whereMaxMinEbay= OR (DATEDIFF(minute,dEbayStart,getdate()) ">" %maxMinsEbay% AND %maxMinsEbay% ">" 0 )
set whereMaxMinAmazon= OR (DATEDIFF(minute,dAmazonStart,getdate()) ">" %maxMinsAmazon% AND %maxMinsAmazon% ">" 0 )
SqlCmd -U "%USER%" -P "%PASSWD%" -S "(local)\%INSTANCE%" -h-1 -W -Q "SET NoCount ON; SELECT %concatShop% %concatEbay% %concatAmazon% from %DATABASE%.%TABLENAME% where %whereMaxMinShop:"=% %whereMaxMinEbay:"=% %whereMaxMinAmazon:"=% " > "%DBList%"
for /f %%i in ("%DBList%") do if %%~zi GTR 10 goto :WriteMail
goto :Deletelock
:WriteMail
IF EXIST %LOCKFILE% goto :end
%BlatPath% -to "%emailTo%" -f "%emailFrom%" -u "%emailUser%" -pw "%emailPass%" -server "%emailSmtp%" -s "%emailSubject%" -body "%emailBody%" -attacht "%DBList%"
type NUL > %LOCKFILE%
goto :end
:Deletelock
IF EXIST %LOCKFILE% del %LOCKFILE% /s /q
goto :end
:end
echo fertig