The T-SQL linter

While you type, NovaSql checks the query and underlines places that are dangerous or slow, before you even press F5. Hovering over an underline shows the explanation.

The rules

Severity Rule Why
Error Syntax error The query cannot be compiled. The message comes straight from the SQL Server parser.
Error DELETE without WHERE removes every row in the table
Error UPDATE without WHERE changes every row
Warning SELECT * returns more columns than needed and breaks when the table changes. Better to list the columns explicitly.
Warning Function on a column e.g. WHERE YEAR(OrderDate) = 2026. This is not sargable: SQL Server cannot do an index seek. Better: WHERE OrderDate >= '2026-01-01' AND OrderDate < '2027-01-01'.
Warning LIKE with a leading wildcard LIKE '%smith' cannot use an index and reads every row.
Info NOLOCK / READUNCOMMITTED can return incomplete or duplicated rows

Errors are underlined in red, warnings in yellow, hints in blue.

Good to know

  • The linter understands GO. Line numbers are right even in long scripts.
  • It does not know the database. It does not check whether a table or column exists; SQL Server reports that when the query runs.
  • A warning is a hint. SELECT * in a quick ad-hoc query is fine; in a view or procedure fixing it pays off.