# piwonka.cc

> Persönliche Website von Georg Piwonka — Software-Entwickler aus Feldkirch, Vorarlberg (Österreich). Schwerpunkt: Microsoft .NET und SQL Server. Bietet einen Blog, kostenlose SQL-Tools und kommerzielle Software (Nova SQL).

Die Site ist zweisprachig (Deutsch/Englisch). Standardsprache ist Deutsch.

## Über mich

- Name: Georg Piwonka
- Rolle: Software Developer
- Standort: Feldkirch, Österreich
- Kontakt: [Kontaktformular](https://piwonka.cc/Contact), E-Mail: georg@piwonka.cc
- Themen: SQL Server, Datenbankoptimierung, Query Performance, Microsoft .NET, ASP.NET Core

## SQL Tools (kostenlos im Browser)

- [Plan Advice](https://piwonka.cc/PlanAdvice): SQL-Server-Ausführungspläne mit Claude analysieren lassen — bilingual (DE/EN).
- [Query Formatter](https://piwonka.cc/Tools/QueryFormatter): SQL-Code formatieren.
- [Index Advisor](https://piwonka.cc/Tools/IndexAdvisor): Index-Empfehlungen für SQL-Statements.
- [Deadlock Analyzer](https://piwonka.cc/Tools/DeadlockAnalyzer): SQL-Server-Deadlock-Reports auswerten.
- [Query Converter](https://piwonka.cc/Tools/QueryConverter): SQL zwischen Dialekten umwandeln.

## Blog

- [Blog-Übersicht](https://piwonka.cc/blog): alle Artikel.

### Aktuelle Beiträge

- [Logging-Framework für MSSQL 2.0: Läufe, Laufzeiten und Fehler, die sonst niemand sieht](https://piwonka.cc/Blog/Detail/64/logging-framework-fuer-mssql-20-laeufe-laufzeiten-und-fehler-die-sonst-niemand-sieht) (2026-09-30) — Mein Logging-Framework für MSSQL hat eine zweite Version bekommen, und der Anlass war ein Review meines eigenen Codes, kein Feature-Wunsch. Die erste Version aus dem Beitrag Ein Logging "Framework" für MSSQL reicht für einfaches Protokollieren. Sobald ich damit Auswertungen bauen wollte, stieß ich auf drei Grenzen, und beim genauen Hinsehen fanden sich auch echte Fehler.
- [MSSQL vom Einzelbenutzermodus befreien](https://piwonka.cc/Blog/Detail/57/mssqlvomeinzelbenutzermodusbefreien) (2026-07-07) — "Ultimatives" Skript zum setzen des Multi User Modus
- [Ich habe eine Diskussion gegen ein lokales LLM gewonnen. Ich musste es nur einen einzigen Satz sagen](https://piwonka.cc/Blog/Detail/55/ich-habe-eine-diskussion-gegen-ein-lokales-llm-gewonnen-ich-musste-es-nur-einen-einzigen-satz-sagen) (2026-07-06) — Ich habe eine Diskussion gegen ein lokales LLM gewonnen. Ich musste es nur einen einzigen Satz sagen lassen.
- [Der längste Tag, eine Hitzewelle und eine Nachricht von Alan Turing](https://piwonka.cc/Blog/Detail/53/der-laengste-tag-eine-hitzewelle-und-eine-nachricht-von-alan-turing) (2026-06-21) — Es war einer dieser Junitage, an denen die Luft einfach stehenbleibt. Der längste Tag des
Jahres, die Sonne, die einfach nicht Feierabend machen wollte, und diese Hitze, bei der man
jeden Plan fallen lässt, der "rausgehen" beinhaltet. Also habe ich getan, was jeder vernünftige
Mensch bei zu viel Hitze tut: drinnen geblieben und ein Spiel gebaut.
- [.NET MAUI ScrollView Tutorial – Inhalte einfach scrollbar machen](https://piwonka.cc/Blog/Detail/51/net-maui-scrollview-tutorial-inhalte-einfach-scrollbar-machen) (2026-06-10) — Die ScrollView ist ein grundlegendes Steuerelement in .NET MAUI, mit dem Inhalte scrollbar dargestellt werden können. Sie eignet sich besonders für Formulare, Detailseiten und andere Ansichten, deren Inhalt größer als der verfügbare Bildschirmbereich ist. Standardmäßig unterstützt sie vertikales Scrollen, kann aber auch horizontal oder in beide Richtungen verwendet werden. Mit Methoden wie ScrollToAsync() und dem Scrolled-Event lässt sich das Scrollverhalten gezielt steuern. Für große Datenmengen sollte jedoch eine CollectionView verwendet werden, da diese deutlich bessere Performance durch Virtualisierung bietet.
- [T-SQL: Cursor vs. WHILE-Schleifen – Wann verwendet man was?](https://piwonka.cc/Blog/Detail/49/t-sql-cursor-vs-while-schleifen-wann-verwendet-man-was) (2026-06-09) — In der Welt von T-SQL (Microsoft SQL Server) gilt das ungeschriebene Gesetz: „Denke in Mengen (Sets), nicht in Zeilen.“ Dennoch gibt es Szenarien, in denen eine zeilenweise Verarbeitung unumgänglich ist. In diesem Fall stellt sich die Frage: Cursor oder WHILE-Schleife?
- [E-Mail-Versand asynchron via Service Broker](https://piwonka.cc/Blog/Detail/44/e-mail-versand-asynchron-via-service-broker) (2026-04-25) — Klassisches Szenario: Du hast eine Stored Procedure, die irgendwas macht (Bestellung anlegen, User registrieren, was auch immer) und am Ende soll eine Mail rausgehen. Statt sp_send_dbmail direkt aufzurufen (was den Aufrufer blockiert, bis SMTP geantwortet hat), legst du die Mail-Anforderung in eine Queue und ein Worker schickt sie im Hintergrund.
- [MSSQL Linked Server mit TrustServerCertificate](https://piwonka.cc/Blog/Detail/43/mssqllinkedservermittrustservercertificate) (2026-04-03) — T-SQL zum Erstellen eines Linked Servers mit TrustServerCertificate = true:
- [SQL Plan Advice: Analysen teilen per Link](https://piwonka.cc/Blog/Detail/42/sql-plan-advice-analysen-teilen-per-link) (2026-03-30) — SQL Server Execution Plans per KI analysieren und das Ergebnis per Link mit Kollegen teilen — 30 Tage gültig.
SQL Server Execution Plan Analyse mit KI — Ergebnisse speichern und per Link teilen. 30 Tage gültig.
- [Eine Sekunde länger – Mein Buch über Falschinformationen](https://piwonka.cc/Blog/Detail/41/eine-sekunde-laenger) (2026-03-28) — #FakeNews #Medienkompetenz #Faktencheck #Desinformation #DigitaleBildung #KritischesDenken #SocialMedia #Deepfakes #Informationsflut #EineSekundeLänger
- [MistralAI.Client](https://piwonka.cc/Blog/Detail/40/mistralaiclient22) (2026-01-27) — A modern, fully-featured .NET client library for the Mistral AI API.
- [MSSQL Performance Skript](https://piwonka.cc/Blog/Detail/38/mssqlperformanceskript) (2026-01-12) — kleines Skript um a bissi die Performance eines SQL Servers zu testen.
- [Wie ich einem .NET MAUI CameraView das Scannen beibrachte (und warum Width/Height so wichtig sind!)](https://piwonka.cc/Blog/Detail/34/netmauicameraview) (2025-07-20) — Oder: Die Geschichte von einem Entwickler, einer Kamera und sehr viel Kaffee ☕
- [Wie ein "Ö" mich nach Grönland teleportierte (und warum ich dort bleiben möchte)](https://piwonka.cc/Blog/Detail/33/wie-ein-oe-mich-nach-groenland-teleportierte-und-warum-ich-dort-bleiben-moechte) (2025-06-22) — Ein 'Ö' im Länderfeld führte zu Grönland statt Österreich. Bei der aktuellen Hitze klang das aber verlockender als mein echtes Heimatland. Danke, unbekannter Programmierer! ❄️ #SoftwareBug #Hitze
- [Was sind indexierte Views?](https://piwonka.cc/Blog/Detail/31/was-sind-indexierte-views) (2025-06-20) — Indexierte Views, auch materialized views genannt, sind spezielle Datenbank-Views in SQL Server, deren Ergebnisse dauerhaft gespeichert und automatisch aktualisiert werden. Sie eignen sich besonders für komplexe Aggregationen, häufig genutzte Joins und performancekritische Abfragen in leselastigen Systemen.
- [Ein Logging "Framework" für MSSQL](https://piwonka.cc/Blog/Detail/29/ein-logging-framework-fuer-mssql) (2025-02-23) — Eine umfassende Protokollierungslösung für SQL Server Stored Procedures, die strukturiertes Logging mit verschiedenen Schwerelevels, automatischer Erkennung des aufrufenden Procedures und detaillierter Fehlerverfolgung bietet.
- [.NET 9.0 - .NET Maui von Frame zu Border](https://piwonka.cc/Blog/Detail/27/net-9-0-net-maui-von-frame-zu-border) (2025-02-20) — Seit .NET 9 warnt der Compiler "Frame" ist veraltet: "Frame is obsolete as of .NET 9. Please use Border instead.".
- [MSSQL Script: Alle LOG Files in einer DB verschieben](https://piwonka.cc/Blog/Detail/23/mssql-script-alle-log-files-in-einer-db-verschieben) (2025-02-11) — MSSQL Script: Alle LOG Files in einer DB verschieben
- [Code compilation: How C# code magically becomes an EXE!](https://piwonka.cc/Blog/Detail/22/code-compilation-how-c-code-magically-becomes-an-exe) (2025-02-09)
- [Code-Compilation: Wie C# Code magisch zur EXE wird!](https://piwonka.cc/Blog/Detail/21/code-compilation-wie-c-code-magisch-zur-exe-wird) (2025-02-08)

## Seiten

- [A Weekend With Claude](https://piwonka.cc/seite/a-weekend-with-claude) — Wie ich während der 24 Stunden von Le Mans mit Claude und ASP.NET Core eine eigene Website als WordPress-Alternative gebaut habe – ein Erfahrungsbericht.
- [Buchmoment](https://piwonka.cc/seite/buchmoment) — Buchverwaltungs-App
- [CSV Pad](https://piwonka.cc/seite/csvpad) — CsvPad öffnet CSV-Dateien so, wie sie sind. Zellen bleiben Text, nichts wird umgerechnet, gerundet oder umformatiert – was hineingeht, kommt unverändert wieder heraus. Trennzeichen und Kodierung erke
- [Hilfe zu Lesetraining TTS](https://piwonka.cc/seite/hilfe-zu-lesetraining-tts)
- [Lernbuddy](https://piwonka.cc/seite/lernbuddy_de) — Meine Tochter ist 13. Statt ChatGPT ihre Hausaufgaben verarbeiten zu lassen, habe ich Lernbuddy gebaut: ein lokaler KI-Lernbegleiter für 10–14-Jährige mit Gemma 4 E4B. Sokratischer Chat, Karteikarten,
- [Lesetraining TTS](https://piwonka.cc/seite/lesetrainingtts)
- [NovaSql](https://piwonka.cc/seite/novasql) — SQL Server Werkzeug mit Schema-Vergleich, grafischen Execution-Plans, KI-gestützter Query-Optimierung und durchsuchbarer Query-Historie. Daten bleiben lokal, keine Telemetrie.
- [Tools](https://piwonka.cc/seite/tools)
- [PYTHON PROGRAMMIEREN LERNEN](https://piwonka.cc/seite/python-programmieren-lernen)
- [Claude über..](https://piwonka.cc/seite/claude)
- [NovaSQL Query Analyser](https://piwonka.cc/seite/novasql-query-analyser)
- [Wie aus einem ausgemisteten Raspberry Pi unser Familienkalender wurde](https://piwonka.cc/seite/wie-aus-einem-ausgemisteten-raspberry-pi-unser-familienkalender-wurde) — Aus einem ausgemisteten Raspberry Pi 3 und 7"-Display wurde ein Familienkalender mit Blazor, .NET 9, Bus-Abfahrten und Wetter. Termine per E-Mail eintragen.
- [Apps](https://piwonka.cc/seite/apps)
- [Über](https://piwonka.cc/seite/ueber)
- [Erste Schritte](https://piwonka.cc/seite/sshm-erste-schritte) — SQL Server Health Monitor überwacht mehrere SQL-Server-Instanzen agentenlos – rein über eine normale SQL-Verbindung, ohne Software auf den überwachten Servern zu installieren.
- [Wait-Statistiken](https://piwonka.cc/seite/sshm-wait-statistiken) — Wartestatistiken zeigen, worauf SQL Server seine Zeit verbringt, wenn er nicht rechnet. Sie sind der schnellste Weg, einen Engpass einzugrenzen: Statt zu raten, sieht man direkt, ob ein System auf…
- [Queries & Analyse](https://piwonka.cc/seite/sshm-queries-und-analyse) — Dieser Bereich hilft, teure oder auffällige Abfragen zu finden und zu verstehen.
- [Plan-Regressionen](https://piwonka.cc/seite/sshm-plan-regressionen) — Eine Abfrage, die gestern 40 ms brauchte und heute 400 ms, hat sich meist nicht selbst geändert — sie hat einen anderen Ausführungsplan bekommen. Query Store hält diese Historie auf der überwachten…
- [Blocking & Deadlocks](https://piwonka.cc/seite/sshm-blocking-und-deadlocks) — Blocking entsteht, wenn eine Transaktion eine Sperre hält, die eine andere braucht. Kurzes Blocking ist normal; langes Blocking bremst spürbar und ist ein häufiger Grund für „die Anwendung hängt“.
- [Index-Gesundheit](https://piwonka.cc/seite/sshm-index-gesundheit) — Der Bereich Performance → Index-Gesundheit und Fehlende Indizes hilft, Indizes zu finden, die bremsen – fragmentierte, ungenutzte, doppelte und fehlende.
- [Storage](https://piwonka.cc/seite/sshm-storage) — Der Storage-Bereich überwacht Dateigrößen, freien Platz und Log-Nutzung – die häufigsten Ursachen für plötzliche Ausfälle („Datenbank voll“, „Log läuft voll“).
- [TempDB](https://piwonka.cc/seite/sshm-tempdb) — Die tempdb ist die gemeinsame Arbeitsdatenbank der ganzen Instanz: temporäre Tabellen, Sortierungen, Hash-Joins, Versionsspeicher. Weil alle sie teilen, wird sie schnell zum Engpass.
- [SQL Agent Jobs](https://piwonka.cc/seite/sshm-sql-agent-jobs) — Diese Seite liest den Zustand und die Historie der SQL-Server-Agent-Jobs aus msdb.dbo.sysjobs und sysjobhistory – also der geplanten Aufgaben wie Backups, Index-Wartung oder ETL.
- [Fehlerprotokoll](https://piwonka.cc/seite/sshm-fehlerprotokoll) — Die Seite Fehlerprotokoll liest das SQL Server-Fehlerprotokoll — und auf derselben Seite das SQL Server Agent-Protokoll — direkt von der überwachten Instanz. Es wird nichts in die…
- [SQL Server Health Monitor](https://piwonka.cc/seite/sshm-hilfe) — Agentenlose Überwachung für SQL Server — Wartestatistiken, Blocking, Indizes, Sicherungen und Alarmierung. Diese Dokumentation erklärt, was die Anwendung misst und wie sie betrieben wird.
- [Sicherungen](https://piwonka.cc/seite/sshm-sicherungen) — Die Seite Sicherungen beantwortet pro Datenbank eine Frage: Wenn dieser Server jetzt ausfiele — wie viel bestätigte Arbeit wäre verloren, und ließe er sich überhaupt wiederherstellen?
- [Login-Aktivität](https://piwonka.cc/seite/sshm-login-aktivitaet) — Die Seite Login-Aktivität beantwortet zwei Fragen: Wie viele Daten bekommt jeder Login geliefert — und ist das für diesen Login zu dieser Stunde der Woche ungewöhnlich?
- [Änderungs-Timeline](https://piwonka.cc/seite/sshm-aenderungs-timeline) — Die Seite Änderungen beantwortet die Frage, die bei jeder Störung als erste gestellt wird: Was hat sich geändert?
- [Alerts & Hysterese](https://piwonka.cc/seite/sshm-alerts-und-hysterese) — Alerts feuern, wenn eine Metrik einen Schwellwert verletzt. Damit sie verlässlich und nicht lärmend sind, kennt der Monitor mehrere Mechanismen.
- [Baselines & N-Sigma](https://piwonka.cc/seite/sshm-baselines-und-n-sigma) — Feste Schwellwerte passen selten für alle Zeiten: 60 % CPU sind Montag früh normal, am Sonntag um 3 Uhr aber verdächtig. Baselines lösen das, indem sie das normale Verhalten pro Server lernen.
- [Benachrichtigungskanäle](https://piwonka.cc/seite/sshm-benachrichtigungskanaele) — Kanäle bestimmen, wohin Alerts gehen. Sie werden verschlüsselt in der Datenbank gespeichert (nicht in appsettings), damit Zugangsdaten geschützt sind.
- [Reports & Kapazität](https://piwonka.cc/seite/sshm-reports-und-kapazitaet) — Der Reporting-Bereich verdichtet die Historie zu Auswertungen und Prognosen.
- [Lizenz-Optimierung](https://piwonka.cc/seite/sshm-lizenz-optimierung) — Der Bericht unter Reports → Lizenz-Optimierung beantwortet eine Frage, die klassische Überwachungssoftware nicht stellt: Zahlen Sie für eine SQL-Server-Edition, die Sie gar nicht benötigen?
- [Backup & Schlüssel](https://piwonka.cc/seite/sshm-backup-und-schluessel) — Zwei Dinge müssen zwingend im Backup-Plan stehen: die Datenbank des Monitors und der Verschlüsselungsschlüssel. Fehlt der Schlüssel, sind gespeicherte Verbindungszeichenfolgen und…
- [Fehlerbehebung](https://piwonka.cc/seite/sshm-fehlerbehebung) — Kurze Antworten auf häufige Situationen.
- [Überblick & Erstinbetriebnahme](https://piwonka.cc/seite/sshm-ueberblick-und-erstinbetriebnahme) — Dieser Ordner enthält die Runbooks für den Betrieb des SQL Server Health Monitor. Sie setzen voraus, dass Installer oder Docker-Image bereits vorliegen, und beantworten die Frage wie mache ich X,…
- [Inbetriebnahme](https://piwonka.cc/seite/sshm-inbetriebnahme) — Die Anwendung wird entweder als veröffentlichte .NET-9-Anwendung (Windows oder Linux) oder als Docker-Image ausgeliefert. Wählen Sie einen der beiden Wege.
- [MSI-Installer](https://piwonka.cc/seite/sshm-msi-installer) — Ein Windows-Installer-Paket, das den SQL Server Health Monitor bereitstellt und als Windows-Dienst registriert. Erstellt mit WiX v5; die Quellen liegen in installer/ (Package.wxs und build.ps1).
- [Docker](https://piwonka.cc/seite/sshm-docker) — Der SQL Server Health Monitor ist eine gewöhnliche ASP.NET-Core-Webanwendung und läuft daher gut in einem Linux-Container. Unter Linux ist der Aufruf UseWindowsService() wirkungslos — die Anwendung…
- [Aktualisierung](https://piwonka.cc/seite/sshm-aktualisierung) — Vorgehen für die Aktualisierung einer Einzelrechner-Installation an Ort und Stelle. Mehrinstanz-Aufbauten (Lastverteiler davor, zwei Anwendungsrechner) behandelt dieses Dokument nicht — sagen Sie…
- [Sicherung & Wiederherstellung](https://piwonka.cc/seite/sshm-sicherung-und-wiederherstellung) — Die Kurzfassung in zwei Sätzen: Sichern Sie die Überwachungsdatenbank — und, falls Sie einen eigenen Encryption:Key gesetzt haben, diesen Schlüssel gleich mit. Die Datenbank enthält alles, was das…
- [Lizenz](https://piwonka.cc/seite/sshm-lizenz) — Das Produkt wird mit einer RSA-signierten Lizenzdatei (license.lic) ausgeliefert. Der Hersteller hält den privaten Schlüssel; die Anwendung enthält nur den öffentlichen Schlüssel und prüft die…
- [Single Sign-on](https://piwonka.cc/seite/sshm-single-sign-on) — Der SQL Server Health Monitor unterstützt OpenID-Connect-SSO neben der lokalen Anmeldung mit Benutzername und Kennwort. Beides schließt sich nicht aus — lokale Konten funktionieren weiter und dienen…
- [Änderungsverfolgung & Lizenzberater](https://piwonka.cc/seite/sshm-aenderungsverfolgung-und-lizenzberater) — Zwei Funktionen, die über die übliche Berechtigung VIEW SERVER STATE hinaus ein Wort zur Einrichtung brauchen. Beide sind standardmäßig aktiv und beide verhalten sich gutmütig: Fehlt eine…
- [Fehlerbehebung](https://piwonka.cc/seite/sshm-fehlerbehebung-betrieb) — Häufige Fehlerbilder und was dagegen hilft. Wenn Sie auf eines stoßen, das hier nicht steht, halten Sie die Ausgabe von /health/detailed sowie die letzten 200 Protokollzeilen fest und eröffnen ein…

## Optional

- [Sitemap (XML)](https://piwonka.cc/sitemap.xml)
- [Kontakt](https://piwonka.cc/Contact)
- [Bug melden / Feature wünschen](https://piwonka.cc/Tickets/Create)
