Prüft ob Dateien existieren, um Sie über einen SQL Server Agent Job und Database Email zu versenden:
-- Tabelle zur Speicherung der Dateipfade anlegen
DECLARE @fileList TABLE (FilePath NVARCHAR(260));
-- Hier werden die Pfade der Output-Dateien eingefügt
INSERT INTO @fileList (FilePath)
VALUES ('C:\tmp\Server108.csv'),
('C:\tmp\Server109.csv'); -- Weitere Pfade ggf. ergänzen
-- Variable, um alle existierenden Dateipfade (Attachments) zu sammeln
DECLARE @AttachmentList NVARCHAR(MAX) = '';
-- Variablen für den Cursor
DECLARE @CurrentFile NVARCHAR(260);
DECLARE @FileExists INT;
-- Cursor definieren, der über alle Dateipfade iteriert
DECLARE fileCursor CURSOR FOR
SELECT FilePath FROM @fileList;
OPEN fileCursor;
FETCH NEXT FROM fileCursor INTO @CurrentFile;
WHILE @@FETCH_STATUS = 0
BEGIN
-- Prüfen, ob die aktuelle Datei existiert
EXEC master.dbo.xp_fileexist @CurrentFile, @FileExists OUTPUT;
-- Falls die Datei existiert, zum Attachment-String hinzufügen (mit Semikolon getrennt)
IF @FileExists = 1
BEGIN
IF LEN(@AttachmentList) > 0
SET @AttachmentList = @AttachmentList + ';' + @CurrentFile;
ELSE
SET @AttachmentList = @CurrentFile;
END
FETCH NEXT FROM fileCursor INTO @CurrentFile;
END
CLOSE fileCursor;
DEALLOCATE fileCursor;
-- Wenn mindestens eine Datei existiert, wird eine E-Mail mit den Attachments versendet.
IF LEN(@AttachmentList) > 0
BEGIN
EXEC msdb.dbo.sp_send_dbmail
@profile_name = 'Email Notification', -- Name des Database Mail Profils
@recipients = 'admins@customer-who-is-interested-adress.de', -- Empfängeradresse
@subject = 'SQL Server Account Check - Fehlende Accounts',
@body = 'Hallo Customer, die Output-Dateien der fehlenden Accounts wurden erstellt. Bitte im Anhang finden Sie die Datei(en).',
@file_attachments = @AttachmentList; -- Alle existierenden Dateipfade als Attachment
PRINT 'E-Mail wurde gesendet mit den folgenden Anhängen: ' + @AttachmentList;
END
-- Falls keine Datei existiert, wird eine E-Mail versendet, die informiert, dass keine fehlenden Accounts gefunden wurden.
ELSE
BEGIN
EXEC msdb.dbo.sp_send_dbmail
@profile_name = 'Email Notification', -- Name des Database Mail Profils
@recipients = 'admins@customer-who-is-interested-adress.de', -- Empfängeradresse
@subject = 'SQL Server Account Check - Alle Accounts vorhanden',
@body = 'Es wurden keine Accounts gefunden, die nicht existieren.';
PRINT 'E-Mail wurde gesendet: Es wurden keine fehlenden Accounts gefunden.';
END;
|