Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Как определить запросы на сервере....  [new]
Sveta_dba
Member

Откуда: Киев
Сообщений: 18
как определить запросы на сервере которые затрагивают 2 или более баз данных ?линкованые не считаются только рамках сервера .
26 янв 14, 15:20    [15470785]     Ответить | Цитировать Сообщить модератору
 Re: Как определить запросы на сервере....  [new]
NickAlex66
Member

Откуда:
Сообщений: 319
Sveta_dba,

Начните от с этого sys.dm_exec_requests
26 янв 14, 16:11    [15470901]     Ответить | Цитировать Сообщить модератору
 Re: Как определить запросы на сервере....  [new]
invm
Member

Откуда: Москва
Сообщений: 9405
Как-то так:
with xmlnamespaces (default 'http://schemas.microsoft.com/sqlserver/2004/07/showplan'), x
as 
(
select
 cp.plan_handle,
 o.n.value('@Database', 'sysname') as database_name,
 ss.n.value('@StatementText', 'nvarchar(max)') as statement_text,
 ss.n.value('@StatementId', 'int') as statement_id
from
 sys.dm_exec_cached_plans cp cross apply
 sys.dm_exec_query_plan(cp.plan_handle) p cross apply
 p.query_plan.nodes('//StmtSimple') ss(n) cross apply
 (select ss.n.query('.')) st(x) cross apply
 st.x.nodes('//Object') o(n)
)
select
 plan_handle, statement_text, statement_id, count(distinct database_name)
from
 x
group by
 plan_handle, statement_text, statement_id
having
 count(distinct database_name) > 1;
26 янв 14, 18:18    [15471200]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить