Der T-SQL-Linter
Während des Tippens prüft NovaSql die Abfrage und unterstreicht Stellen, die gefährlich oder langsam sind, noch bevor F5 gedrückt wird. Bewegt man die Maus über eine Unterstreichung, erscheint die Erklärung.
Die Regeln
| Schwere | Regel | Warum |
|---|---|---|
| Fehler | Syntaxfehler | Die Abfrage lässt sich nicht übersetzen. Die Meldung kommt direkt vom SQL-Server-Parser. |
| Fehler | DELETE ohne WHERE | löscht die gesamte Tabelle |
| Fehler | UPDATE ohne WHERE | ändert alle Zeilen |
| Warnung | SELECT * | liefert mehr Spalten als nötig und bricht, wenn sich die Tabelle ändert. Spalten besser explizit auflisten. |
| Warnung | Funktion auf einer Spalte | z. B. WHERE YEAR(Datum) = 2026. Das ist nicht SARG-fähig: SQL Server kann keinen Index-Seek machen. Besser: WHERE Datum >= '2026-01-01' AND Datum < '2027-01-01'. |
| Warnung | LIKE mit führender Wildcard | LIKE '%meier' kann keinen Index nutzen und liest alle Zeilen. |
| Info | NOLOCK / READUNCOMMITTED | kann unvollständige oder doppelte Zeilen liefern |
Fehler sind rot, Warnungen gelb, Hinweise blau unterstrichen.
Gut zu wissen
- Der Linter versteht
GO. Die Zeilennummern stimmen auch in langen Skripten. - Er kennt die Datenbank nicht. Ob eine Tabelle oder Spalte existiert, prüft er nicht; das meldet erst SQL Server beim Ausführen.
- Eine Warnung ist ein Hinweis.
SELECT *in einer schnellen Ad-hoc-Abfrage ist in Ordnung; in einer View oder Prozedur lohnt sich die Korrektur.