Итак, я немного упростил sql, как и в моем предыдущем комментарии к исходному вопросу.
WITH computed_tabled AS
(
SELECT id FROM this_table_does_not_existd
)
(SELECT id FROM computed_tabled)
Это, похоже, дает нам такое же поведение.Затем я запустил след.Классы событий:
- SQL: запуск пакета
- SQL: пакетное выполнение
- SQL: StmtStarting
- SQL: StmtCompleted
- Showplan All
- Showplan XML
То, что я обнаружил, было неожиданным:
- SQL: BatchStarting
- SQL: StmtStarting
- SQL: BatchCompleted
Примечание: нет SQL: StmtCompleted, нет планов.Итак, затем я возвращаюсь к настройкам захвата и добавляю каждый класс событий в разделе «Ошибки и предупреждения».Повторите запрос, и что вы знаете?Первое пойманное событие:
Error: 208, Severity: 16, State: 1
Угадайте, что такое 208 ?Но клиент никогда не видит ошибку.
Я думаю, что происходит из-за того, что код в СУБД говорит - эй, они не просили нас ничего возвращать или делать что-то, так зачем беспокоиться?Давайте высвободим некоторые ресурсы для кого-то более требовательного.
Итак, я попробовал этот фрагмент кода:
--asdfasdf
( SELECT 1 )
, который полностью разрушил мою теорию.Скобка НЕ интерпретировалась как выражение.Вместо этого они интерпретировались как полностью запрос (то есть клиент запрашивает , что-то требует возврата) и возвращали набор записей с 1 столбцом и 1 строкой.Но никакого плана - вероятно, потому что никакого плана не было, так как не требовалось никаких объектов БД.
Итак, чтобы еще немного поразмыслить, я попробовал это:
declare @id as integer;
;
WITH computed_table AS
(
SELECT id FROM this_table_does_not_exist
)
select @id = (SELECT id FROM computed_table)
Что, оченькак удаление скобок, выдает сообщение об ошибке пользователя.
Я говорю, вы ничего не упускаете.Я думаю, что это ошибка MS SQL Server.Это, конечно, похоже на cte и круглые скобки.Я пытался поискать в Google, но ничего не нашел.Это даст мне возможность поговорить на следующем заседании ПАСЕ.Извините, все, что я должен добавить в ситуацию, это замешательство.Если я что-то узнаю, я обязательно опубликую это здесь!
Обновление: 2010-06-26 10:09 CST Я обратился в Microsoft Connect, чтобы попытаться найти это в списке проблем.,Я не смог найти что-то около cte 208 или cte недействительный объект .Честно говоря, я не знаю другого сайта с перечнем ошибок для сервера sql, который можно было бы проверить.Я также попытался выполнить поиск в службе поддержки Microsoft и, опять же, в Google.