SQL-Server-Berichte nach Zeitplan
Abfragen. Aufbereiten. Abliefern.
QueryPilot führt SQL-Abfragen zeitgesteuert aus, schreibt die Ergebnisse als Excel, CSV, HTML oder JSON, lässt sie auf Wunsch von einer KI zusammenfassen und versendet alles per E-Mail. Dateibasiert, portabel, ohne eigene Datenbank für die Konfiguration.
Screenshot: Jobansicht mit Queries, KI-Magic, Variablen und Zeitplanung, daneben der SQL-Editor.
Einblick
Ein Job, von der Abfrage bis zur E-Mail
Alles zu einem Job steht in einem Fenster: Queries, KI-Auswertungen, Variablen, E-Mail und Zeitplanung. Wählen Sie eine Ansicht per Klick oder mit den Pfeiltasten aus.
Screenshots der Programmansichten: SQL-String, Ausgabe, Platzhalter, Zeitplanung, KI-Magic und E-Mail.
Der Editor färbt T-SQL wie das Management Studio. Variablen werden als echte Parameter übergeben, hier @Von und @Bis.
Ablauf
Ein Lauf, fünf Schritte
Jeder Lauf folgt derselben Reihenfolge. Beim ersten Fehler wird abgebrochen, damit keine unvollständigen Berichte verschickt werden.
Auslösen
Eine Zeitregel im Windows-Dienst startet den Job, oder ein Klick im Desktop.
Variablen
Text, Zahl, Datum, Ausdruck oder erster Wert einer SQL-Abfrage.
Queries
Nacheinander gegen SQL Server, Werte als echte Parameter.
Aufbereiten
Excel mit Vorlage, CSV, HTML mit Formatvorlage oder JSON. Optional eine KI-Zusammenfassung.
Versand
Bei erfüllter Zeilenbedingung, bei Bedarf gezippt, per SMTP an die Empfänger des Jobs.
Zentrale Verwaltung
Server, KI und E-Mail einmal hinterlegen
Datenbankverbindungen, KI-Anbindungen und der E-Mail-Versand werden einmal zentral gepflegt und stehen dann allen Jobs zur Verfügung. Jobs verweisen nur auf das Kürzel. Zieht ein Server um oder ändert sich der SMTP-Host, genügt eine Änderung an einer Stelle.
Screenshots der zentralen Verwaltung: Datenbankverbindungen, KI-Verbindungen und E-Mail-Einstellungen.
Jede Verbindung hat ein Kürzel, Server, Datenbank und Anmeldeart. Queries wählen die Verbindung über das Kürzel. Kennwörter liegen AES-verschlüsselt im Datenordner, ein Verbindungstest prüft sie sofort.
Bausteine
Drei Teile, ein Datenordner
Desktop und Dienst arbeiten auf denselben XML-Dateien und demselben Schlüssel. Der Datenordner liegt lokal oder auf einer geschützten Freigabe.
Kern
Die gemeinsame Programmbibliothek ohne eigene Oberfläche. Sie liest die XML-Konfiguration, entschlüsselt Kennwörter, löst Platzhalter und Variablen auf, führt die Abfragen aus, schreibt Excel, CSV, HTML, Text und JSON, ruft die KI, versendet und zippt die E-Mail, wertet Zeitregeln aus und schreibt die Historie. Desktop und Dienst rufen dieselbe Logik auf, deshalb liefert ein Testlauf dasselbe Ergebnis wie der Server.
Desktop
Portable Oberfläche für Jobs, Verbindungen, KI-Verbindungen, Formatvorlagen, SQL-Vorschau und Testlauf. Startet lokal oder von einer Netzwerkfreigabe.
Windows-Dienst
Führt die Zeitregeln aller Jobs aus, ohne angemeldeten Benutzer, und stellt dem Desktop eine Schnittstelle für Status und Sofortstart bereit.
Funktionen
Was im Alltag zählt
Zeitregeln
Täglich, wöchentlich, bestimmte Monatstage, Monatserster und -letzter, erster Wochentag im Monat, Intervall im Zeitfenster, einmalig.
Excel mit Vorlage
Mehrere Queries schreiben in die Tabellenblätter einer Vorlagenarbeitsmappe. Formeln und Formatierung bleiben erhalten.
HTML-Formatvorlagen
Verwaltbare Vorlagen mit eigenem CSS und JavaScript. Tabellen können direkt in den E-Mail-Text eingebettet werden.
JSON-Export
Ergebnisse als UTF-8-JSON mit Kürzel, Name, Beschreibung, Spalten samt Datentyp und Zeilen. Zahlen und Wahrheitswerte bleiben nativ, NULL wird null.
KI-Magic
Eine KI-Auswertung fasst ausgewählte Query-Ergebnisse nach eigenem Prompt zusammen. Das Ergebnis steht als Text, Markdown oder HTML in der E-Mail. Jede OpenAI-kompatible Chat-API lässt sich anbinden.
SQL-Vorschau
Nicht-modales Fenster mit Syntaxfärbung, Zeilennummern und bis zu 200 Datensätzen. Fehler erscheinen direkt in der Vorschau.
Fehler-E-Mail
Schlägt ein Job fehl, geht eine Meldung an feste Empfänger. Zu große Anhänge werden mit Datei, Größe und Ablageort benannt statt still weggelassen.
Sichere Ablage
Kennwörter mit AES-256-GCM verschlüsselt. Beim Speichern wird die Datei erst fertig geschrieben und dann in einem Zug getauscht, ein halber Stand kann nicht entstehen. Frühere Fassungen bleiben erhalten.
Platzhalter und Variablen
Datum, Kontext und eigene Werte
Platzhalter gelten in Dateinamen, Zielpfaden, Betreff und Nachricht. Jobvariablen stehen zusätzlich als SQL-Parameter zur Verfügung und werden nie in den SQL-Text kopiert.
- Datumsrechnung mit .NET-Formatzeichen, etwa
{date-1;"dd.MM.yyyy"} - Vorwoche von Montag bis Sonntag, Monatsanfang und -ende
- Jobname, Query-Kürzel, Kalenderwoche, Rechner- und Benutzername
- KI-Ergebnisse als
{KI1.Text},{KI1.Markdown}oder{KI1.Html} - Variablen verketten: spätere dürfen frühere verwenden
{date}{date+N}{month-start}{month-end-1}{week-start-1}{calendarweek}{jobname}{querycode}{username}
-- Jobvariablen (in dieser Reihenfolge ermittelt) Von | Zeitraum von | Expression | {month-start;"yyyy-MM-dd"} Bis | Zeitraum bis | Expression | {month-end;"yyyy-MM-dd"} Mandant | Mandant | SqlQuery | SELECT TOP (1) Mandant FROM dbo.Mandanten -- Verwendung im SQL-String, als echte Parameter SELECT Kunde, Belegdatum, Nettobetrag FROM dbo.Umsatz WHERE Belegdatum BETWEEN @Von AND @Bis ORDER BY Belegdatum; -- Verwendung im Dateinamen und im Betreff Umsatz_{Mandant}_{date;"yyyy-MM-dd"}.xlsx Monatsbericht {date;"MMMM yyyy"}
Historie
Sehen, wann was gelaufen ist
Jede ausgeführte Query wird protokolliert, mit Zeitstempel, Job, Kürzel, Zeilenanzahl, Dauer und Erfolg. Bei einem Fehler steht die Meldung in derselben Zeile.
- Eine Historie je Job und eine gemeinsame über alle Jobs
- Als CSV im Datenordner, direkt in Excel auswertbar
- Die Übersicht zeigt die Ausführungen der letzten 24 Stunden
Screenshot: Historienansicht mit Zeitstempel, Job, Query, Zeilenanzahl, Dauer und Erfolg.
Betrieb
Windows-Dienst mit Zeitregeln
Der Dienst läuft auf dem Ausführungsserver ohne angemeldeten Benutzer, prüft die Zeitregeln aller Jobs und führt sie aus. Das Desktopprogramm spricht ihn direkt an: Status prüfen, Dienst starten und beenden, einen Job sofort auf dem Server ausführen.
- Datenordner mit Jobs, Verbindungen und Schlüssel liegt zentral auf einer Freigabe
- Die HTTP-Schnittstelle verwendet die Windows-Anmeldung des aufrufenden Benutzers
- Der Installationsbefehl wird im Programm fertig zusammengesetzt und kann kopiert werden
- Das Dienstkonto braucht das Recht Anmelden als Dienst sowie Zugriff auf SQL Server, Ordner und SMTP
Screenshot: Ansicht Windowsdienst mit Serverdienst-Adresse, Prüfung und Installationsbefehl.
Installation auf dem Server
$konto = Get-Credential 'DOMÄNE\QueryPilotDienst'
.\Install-Service.ps1 `
-DataRoot '\\Dateiserver\Freigabe\QueryPilot-Daten' `
-Port 5098 `
-ServiceCredential $konto `
-OpenFirewall
Voraussetzungen
Was gebraucht wird
- Windows Server oder Windows 10/11, 64 Bit
- Ein dediziertes Windows-Dienstkonto mit Zugriff auf SQL Server, Datenordner und SMTP
- Ein Datenordner, per NTFS nur für Administratoren und das Dienstkonto lesbar
- Für KI-Magic: Zugang zu einer OpenAI-kompatiblen Chat-API
Woher das kommt
Aus dem eigenen Tagesgeschäft entstanden
Auswertungen waren jahrelang ein Teil meines Tagesgeschäfts. Zahlen ziehen, aufbereiten, verschicken. Immer und immer öfter und immer mehr wiederkehrend.
Irgendwann war Automatisieren keine Spielerei mehr, sondern schlicht notwendig. Dabei zeigt sich schnell: Die Abfrage selbst ist selten das Problem. Es sind die Stellen daneben.
- Ein Wert wird in mehreren Abfragen gebraucht. Er sollte einmal festgelegt werden und dann überall gelten, statt in jeder Abfrage erneut dortzustehen.
- Manche Werte kennt man vorher gar nicht. Der durchschnittliche Auftragseingang des Vormonats muss erst selbst ermittelt werden, damit anschließend die einzelnen Aufträge dagegen verglichen werden können.
- Eine Excel-Vorlage soll ihre Formeln, ihre Formatierung und ihre Blattnamen behalten, auch wenn eine Abfrage mitten hinein schreibt.
- Der letzte Tag des Monats ist im Februar ein anderer als im März, und im Schaltjahr wieder ein anderer.
- Ein Anhang, der für den Mailserver zu groß ist, darf nicht einfach fehlen. Der Empfänger muss lesen können, wie groß die Datei ist und wo sie liegt.
- Läuft nachts um vier eine Abfrage in eine Zeitüberschreitung, muss das jemand erfahren, und zwar bevor der Verteiler es merkt.
Solche Kleinigkeiten entscheiden darüber, ob man dem Bericht am Morgen traut. Deshalb steckt an vielen Stellen eine bewusste Entscheidung. Das Desktopprogramm und der Dienst arbeiten mit demselben Programmkern. Ein Testlauf am Arbeitsplatz macht deshalb genau das, was nachts auf dem Server passiert, und nicht ungefähr dasselbe.
Auch beim Speichern wird nichts riskiert. Eine geänderte Datei wird zuerst vollständig neu geschrieben und erst danach in einem Zug gegen die alte getauscht. Bricht dabei etwas ab, etwa weil der Rechner ausgeht, bleibt der bisherige Stand unversehrt. Eine halb geschriebene Konfiguration kann es nicht geben. Die vorherigen Stände bleiben zusätzlich liegen, man kommt also jederzeit auf eine ältere Fassung zurück. Und die gespeicherten Kennwörter sind mit einem Schlüssel gesichert, den Arbeitsplatz und Dienstkonto gemeinsam nutzen, weil beide denselben Datenordner lesen müssen.
QueryPilot will damit kein weiteres Berichtssystem sein, sondern den Weg von der Abfrage bis ins Postfach verlässlich abdecken. Und damit das Aufsetzen eines Abfragesets schnell geht, habe ich nach dem Prinzip Usability first entwickelt: Was häufig gebraucht wird, liegt dort, wo man es sucht, und nicht drei Menüs tiefer.
Thorsten KrügerEntwickler von QueryPilot
Nächster Schritt
Welche Auswertung kostet Sie am meisten Zeit?
Nennen Sie uns diese eine Auswertung. Wir klären gemeinsam, ob sie sich mit QueryPilot abbilden lässt und was der Aufbau kostet. Vorhandene Abfragen lassen sich übernehmen.