2013-04-22 22 views
5

Có thể tìm ra ai được gọi là thủ tục lưu trữ không? , Tôi đang sử dụng các truy vấn sau đây để xác định số lượng thực hiện vv nhưng tôi không thể xác định được công việc/kích hoạt/quá trình được gọi nó. Bất kỳ ý tưởng về nó xin vui lòngCó thể tìm ra ai được gọi là thủ tục lưu trữ trong máy chủ 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

_who_ là gì? '@@ SPID' và' ORIGINAL_LOGIN() 'có sẵn. Bạn có muốn xem xét dấu vân tay thông qua bàn phím và xem ai đã bắt đầu ứng dụng _really_ không? 'select * từ sys.dm_exec_connections như EC bên trong tham gia sys.dm_exec_sessions như ES trên ES.session_id = EC.session_id nơi EC.session_id = @@ SPID'? – HABO

+0

Một chủ đề chung mà bạn sẽ thấy trong câu trả lời là, mà không cần đăng nhập tất cả mọi thứ, nó không thể nhìn thấy ai _called_ một proc được lưu trữ; thay vào đó, bạn có thể thấy ai _is gọi_ nó. –

Trả lời

3

Sử dụng quy trình lưu trữ Who is Active của Adam Machanic - điều này trả về tất cả các loại thông tin về các câu lệnh đang hoạt động, bao gồm cả người dùng đã khởi chạy chúng.

+0

Cảm ơn rất nhiều về liên kết. Cần một cái gì đó như nó. –

3

Nếu bạn muốn xem ai đang thực hiện một thủ tục lưu trữ, một con đường để đi về việc này là để tạo ra một vết server-side và nắm bắt được sự kiện SP:Completed. Dữ liệu được cung cấp bởi lớp sự kiện này sẽ cung cấp cho bạn tất cả thông tin người gọi bạn cần.

tham khảo: BOL documentation on the SP:Completed Event Class

2

Vâng, nếu bạn cháy lên SQL Profiler, nó sẽ hiển thị cho bạn những id mạng của người sử dụng NT, tôi đề nghị bạn chạy dấu vết profiler trên máy chủ tự nó nếu điều này là một cách sử dụng không thường xuyên. luân phiên nếu bạn không sử dụng chế độ khôi phục đơn giản, thì câu trả lời sẽ nằm trong bản sao lưu nhật ký giao dịch. Tuy nhiên điều này là không dễ dàng để phân tích hoặc đọc.

+0

Cảm ơn, tôi đã xác định một gói dtsx. – user362283

1

Tùy chọn sử dụng với Dynamic Management Views. DMV cung cấp một giao diện quan hệ đơn giản và quen thuộc để thu thập thông tin hệ thống quan trọng từ Máy chủ SQL của bạn.

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'