Как проверить синтаксис SQL в SQL Server 2008 R2?

Есть ли возможность проверить синтаксис после того, как я завершил создание запроса? Если да, где я могу его найти? Что он проверяет и что он не подтверждает?

Ответ 1

Вы можете нажать кнопку Parse query в Studio Management Studio. Это голубая галочка на панели инструментов (вы также можете использовать Ctrl + F5):

parse.png

Это только подтверждает синтаксис и не проверяет, что объекты, на которые вы ссылались, существуют, что соединения действительны и т.д. Например, следующие правильно анализируют, поскольку отложенное разрешение предполагает, что к моменту запуска запроса "для реального" объект будет существовать:

SELECT foo FROM dbo.table_does_not_exist;

Это также проходит разбор:

SELECT d.foo 
FROM x.dbo.does_not_exist AS d
INNER JOIN sys.objects AS s
ON d.blat = s.bar;

Даже если sys.objects существует, но не содержит столбца bar.

Это по сути тот же механизм, который позволяет вам скомпилировать хранимую процедуру, которая ссылается на объекты, которые еще не существуют (что, конечно же, не удастся во время выполнения).