2012-05-26 45 views
11

Có một chương trình hoặc truy vấn sql mà tôi có thể tìm thấy truy vấn SQL nào đang được chạy trên SQL Server 2012 không? Tôi nghĩ rằng có một công cụ trong phiên bản trước của SQL Server, nơi các nội dung truy vấn thực tế được hiển thị hoặc tên thủ tục lưu trữ?Hiện đang chạy truy vấn trong SQL Server

+1

SQL Profiler có nghĩa là, không phải là nó? :) –

Trả lời

6

đây là những gì bạn cần phải cài đặt profiler SQL http://msdn.microsoft.com/en-us/library/bb500441.aspx. Tuy nhiên, tôi khuyên bạn nên đọc qua số http://blog.sqlauthority.com/2009/08/03/sql-server-introduction-to-sql-server-2008-profiler-2/ nếu bạn đang tìm cách thực hiện nó trên Môi trường sản xuất của mình. Có một cách tốt hơn để nhìn vào các truy vấn xem cái này và xem nếu nó giúp http://www.youtube.com/watch?v=vvziPI5OQyE

4

Công cụ này được gọi là SQL Server Profiler, nó vẫn là một phần của bộ công cụ chuẩn.

+0

'SQL Server Profiler' ở đâu? Trong MS SQL Server 2012 của tôi không có thư mục 'Công cụ hiệu suất'. Tôi không thấy bất kỳ công cụ nào khác. Làm cách nào để cài đặt các công cụ này. Tôi nghĩ mọi thứ đã được cài đặt. Profiler có còn trong SQL Server 2012 không? Trường hợp trong cài đặt là những công cụ này? – iefpw

+0

Với phiên bản không thể hiện, nó đi kèm với tùy chọn Công cụ quản lý; các phiên bản express không bao gồm Profiler – SqlACID

22

Tùy thuộc vào quyền của bạn, truy vấn này có thể làm việc:

SELECT sqltext.TEXT, 
req.session_id, 
req.status, 
req.command, 
req.cpu_time, 
req.total_elapsed_time 
FROM sys.dm_exec_requests req 
CROSS APPLY sys.dm_exec_sql_text(sql_handle) AS sqltext 

Ref: http://blog.sqlauthority.com/2009/01/07/sql-server-find-currently-running-query-t-sql

+2

Điều này có tác dụng, nhưng có cách nào để tìm ra các giá trị tham số không? – jtate

3

Có điều này, từ SQL Server DMV của Trong Action cuốn sách:

Kết quả cho thấy các dịch vụ spid (quá trình nhận dạng), ecid (tương tự như một luồng trong cùng một spid và hữu ích cho việc xác định các truy vấn chạy song song), người dùng chạy SQL, trạng thái (cho dù SQL đang chạy hay đang chờ), trạng thái chờ đợi (tại sao nó chờ) , tên máy chủ, tên miền và thời gian bắt đầu (hữu ích để xác định khoảng thời gian chạy hàng loạt).

Phần hay nhất là truy vấn và truy vấn gốc. Điều đó cho thấy, ví dụ, một proc được lưu trữ như là cha mẹ và truy vấn trong proc được lưu trữ đang chạy. Nó rất tiện dụng cho tôi. Tôi mong điều này giúp được người nào khác.

USE master 
GO 
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED 
SELECT 
er.session_Id AS [Spid] 
, sp.ecid 
, er.start_time 
, DATEDIFF(SS,er.start_time,GETDATE()) as [Age Seconds] 
, sp.nt_username 
, er.status 
, er.wait_type 
, SUBSTRING (qt.text, (er.statement_start_offset/2) + 1, 
((CASE WHEN er.statement_end_offset = -1 
THEN LEN(CONVERT(NVARCHAR(MAX), qt.text)) * 2 
ELSE er.statement_end_offset 
END - er.statement_start_offset)/2) + 1) AS [Individual Query] 
, qt.text AS [Parent Query] 
, sp.program_name 
, sp.Hostname 
, sp.nt_domain 


FROM sys.dm_exec_requests er 
INNER JOIN sys.sysprocesses sp ON er.session_id = sp.spid 
CROSS APPLY sys.dm_exec_sql_text(er.sql_handle)as qt 
WHERE session_Id > 50 
AND session_Id NOT IN (@@SPID) 
ORDER BY session_Id, ecid 
14

tôi sử dụng các truy vấn dưới đây

SELECT SPID  = er.session_id 
    ,STATUS   = ses.STATUS 
    ,[Login]  = ses.login_name 
    ,Host   = ses.host_name 
    ,BlkBy   = er.blocking_session_id 
    ,DBName   = DB_Name(er.database_id) 
    ,CommandType = er.command 
    ,ObjectName  = OBJECT_NAME(st.objectid) 
    ,CPUTime  = er.cpu_time 
    ,StartTime  = er.start_time 
    ,TimeElapsed = CAST(GETDATE() - er.start_time AS TIME) 
    ,SQLStatement = st.text 
FROM sys.dm_exec_requests er 
    OUTER APPLY sys.dm_exec_sql_text(er.sql_handle) st 
    LEFT JOIN sys.dm_exec_sessions ses 
    ON ses.session_id = er.session_id 
LEFT JOIN sys.dm_exec_connections con 
    ON con.session_id = ses.session_id 
WHERE st.text IS NOT NULL 
+2

Tôi thấy điều này hữu ích hơn nhiều so với các tìm kiếm khác cho các truy vấn hiển thị các công việc đang chạy. Điều này cho thấy máy chủ và đăng nhập, điều này thật tuyệt vời, cảm ơn! – russds

Các vấn đề liên quan