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.