2013-04-22 15 views
5

Czy można się dowiedzieć, kto nazwał procedurę sklepu? , Używam następującego zapytania, aby zidentyfikować liczbę wykonań itp., Ale nie jestem w stanie określić, która robota/wyzwalacz/proces ją wywołuje. Wszelkie pomysły o nią proszęCzy można dowiedzieć się, kto nazwał procedurę sklepu w serwerze sql 2005?

SELECT a.execution_count ,OBJECT_NAME(objectid) Name, 
(CASE WHEN a.statement_end_offset = -1 
THEN 
len(convert(nvarchar(max), b.text)) * 2 
ELSE 
a.statement_end_offset 
END - a.statement_start_offset)/2) ,b.dbid ,dbname = db_name(b.dbid) , b.objectid 
,a.creation_time,a.last_execution_time,a.* 
FROM sys.dm_exec_query_stats a CROSS APPLY sys.dm_exec_sql_text(a.sql_handle) as b 
WHERE OBJECT_NAME(objectid) = 'Rebuild_Indexes' ORDER BY a.last_execution_time 
ESCquery_text = SUBSTRING(b.text,a.statement_start_offset/2, 
+0

Co to jest _who_? Dostępne są '@@ SPID' i' ORIGINAL_LOGIN() '. Czy chcesz przejrzeć odciski palców za pomocą klawiatury i zobaczyć, kto tak naprawdę uruchomił aplikację? 'select * from sys.dm_exec_connections as Łączenie WE sys.dm_exec_sessions jako ES na ES.session_id = EC.session_id gdzie EC.session_id = @@ SPID'? – HABO

+0

Tematem, który można znaleźć w odpowiedziach, jest to, że bez rejestrowania wszystkiego niemożliwe jest sprawdzenie, kto je zwrócił; raczej możesz zobaczyć, kto _ nazywa to. –

Odpowiedz

3

Użycie procedury przechowywanej Adam Machanic Who is Active - zwraca wszystkie rodzaje informacji o aktywnych wyciągach, w tym użytkownika, który je uruchomił.

+0

Wielkie dzięki za link. Potrzebowałem czegoś podobnego. –

3

Jeśli chcesz zobaczyć, kto wykonuje procedurę przechowywaną, jednym ze sposobów, aby go o to, aby stworzyć Ślad po stronie serwera i uchwycić zdarzenia SP:Completed. Dane dostarczone przez tę klasę zdarzeń dostarczą wszystkich informacji o dzwoniącym, których powinieneś potrzebować.

referencyjny: BOL documentation on the SP:Completed Event Class

2

Dobrze, jeśli odpalić SQL Profiler, pokaże identyfikator sieciowy użytkownika NT, proponuję uruchomić śledzenia profilera na serwerze swój własny, jeśli jest to sporadyczne użycie. naprzemiennie, jeśli nie używasz prostego trybu odzyskiwania, odpowiedź będzie w kopii zapasowej dziennika transakcji. Jednak nie jest to łatwe do przeanalizowania lub przeczytania.

+0

Dzięki, zidentyfikowaliśmy pakiet dtsx. – user362283

1

Użyj opcji z Dynamic Management Views. DMV zapewniają prosty i znany interfejs relacyjny do zbierania krytycznych informacji systemowych z serwera SQL.

SELECT DB_NAME(der.database_id) AS databaseName, 
     OBJECT_NAME(objectid), 
     der.session_id, 
     login_name, 
     USER_NAME(der.user_id) AS user_name, 
     der.command, 
     dest.text AS [CommandText], 
     des.login_time, 
     des.[host_name], 
     dec.client_net_address, 
     des.[program_name],  
     der.status 
FROM sys.dm_exec_requests der 
    INNER JOIN sys.dm_exec_connections dec ON der.session_id = dec.session_id 
    INNER JOIN sys.dm_exec_sessions des ON der.session_id = des.session_id 
    CROSS APPLY sys.dm_exec_sql_text (sql_handle) AS dest 
WHERE des.is_user_process = 1 
    --AND OBJECT_NAME(objectid) = 'Rebuild_Indexes' 
Powiązane problemy