Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 пятничный маразм  [new]
o-o
Guest
вот этот код
SELECT qs.plan_handle, aa.attrlist, qs.*, est.*
FROM   sys.dm_exec_query_stats qs
CROSS  APPLY sys.dm_exec_sql_text(qs.sql_handle) est
CROSS  APPLY (SELECT epa.attribute + '=' + convert(nvarchar(127), epa.value) + '   '
              FROM   sys.dm_exec_plan_attributes(qs.plan_handle) epa
              WHERE  epa.is_cache_key = 1
              ORDER  BY epa.attribute
              FOR    XML PATH('')) AS aa(attrlist)
WHERE  est.dbid     = db_id('db1')


нормально выполняется в контексте любой базы, кроме одной,
в к-ой вызывает ошибки:
Msg 102, Level 15, State 1, Line 3
Incorrect syntax near '.'.
Msg 102, Level 15, State 1, Line 5
Incorrect syntax near '.'.


вот что это может быть?
смотрю в sys.objects той базы (крошечная), ну вдруг у какого объекта имя совпало с алиасом или еще чем,
вроде все чисто, схемы -- тоже все стандартные + схема "а" -- но в запросе уж алиас аа.
и вообще, строки с ошибкой подсвечивает именно третью и пятую, near '.' наводит на мысль,
что ему не нравится qs.sql_handle.
смена алиаса qs на qs1 ничего не меняет.
у кого-нибудь есть идеи?
мне абсолютно некритично, просто спортивный интерес.
25 июл 14, 14:28    [16357738]     Ответить | Цитировать Сообщить модератору
 Re: пятничный маразм  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37068
o-o
нормально выполняется в контексте любой базы, кроме одной

compatibility_level?
25 июл 14, 14:31    [16357775]     Ответить | Цитировать Сообщить модератору
 Re: пятничный маразм  [new]
iap
Member

Откуда: Москва
Сообщений: 47000
EXEC sp_dbcmptlevel <ИмяБазы>
что вернёт?
25 июл 14, 14:32    [16357787]     Ответить | Цитировать Сообщить модератору
 Re: пятничный маразм  [new]
o-o
Guest
приз уходит Гавриленко Сергей Алексеевич и iap (распиливайте уж сами на двоих)
80 стояло :)
но растолкуйте мне, плиз, почему же тогда не во 2-ой строке ошибка, ведь там есть sys.dm_exec_query_stats?
25 июл 14, 14:54    [16358035]     Ответить | Цитировать Сообщить модератору
 Re: пятничный маразм  [new]
iap
Member

Откуда: Москва
Сообщений: 47000
o-o
приз уходит Гавриленко Сергей Алексеевич и iap (распиливайте уж сами на двоих)
80 стояло :)
но растолкуйте мне, плиз, почему же тогда не во 2-ой строке ошибка, ведь там есть sys.dm_exec_query_stats?
Потому что Вне APPLY в вызов табличной функции нелюзя ставить ничего,
кроме переменных и литеральных значений.
В именах переменных ведь точка недопустима, верно?
А APPLY появился в 2005 (9.0)
25 июл 14, 14:57    [16358065]     Ответить | Цитировать Сообщить модератору
 Re: пятничный маразм  [new]
o-o
Guest
iap,

спсб,
я-то ж не на APPLY или функцию думаю, а на DMV, тоже ж в 2005 появились,
а по тексту sys.dm_exec_query_stats раньше находится.
но он имена объектов потом проверяет, все верно
25 июл 14, 15:05    [16358133]     Ответить | Цитировать Сообщить модератору
 Re: пятничный маразм  [new]
o-o
Guest
...а все-таки маразм есть, у меня
даже при уровне совместимости 80
можно читать из появившихся в 2005-ом DMV.
(не на 2000-ом, конечно. но у меня же 2008R2)
25 июл 14, 15:27    [16358282]     Ответить | Цитировать Сообщить модератору
 Re: пятничный маразм  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37068
o-o
...а все-таки маразм есть, у меня
даже при уровне совместимости 80
можно читать из появившихся в 2005-ом DMV.
(не на 2000-ом, конечно. но у меня же 2008R2)
DMV не нарушают синтаксис, ибо это есть обычные вьюшки (по крайней мере, внешне).
25 июл 14, 15:31    [16358314]     Ответить | Цитировать Сообщить модератору
 Re: пятничный маразм  [new]
o-o
Guest
Гавриленко Сергей Алексеевич,

ну и я про то же.
до меня дошло, но только через 20 минут
25 июл 14, 15:39    [16358383]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить