2010-08-26 32 views

Trả lời

92

Vâng, có một cái nhìn, điều này sẽ cung cấp cho bạn 50 câu lệnh SQL được thực hiện gần đây nhất

sql 2005 và chỉ chiếm

SELECT TOP 50 * FROM(SELECT COALESCE(OBJECT_NAME(s2.objectid),'Ad-Hoc') AS ProcName, 
    execution_count,s2.objectid, 
    (SELECT TOP 1 SUBSTRING(s2.TEXT,statement_start_offset/2+1 , 
     ((CASE WHEN statement_end_offset = -1 
    THEN (LEN(CONVERT(NVARCHAR(MAX),s2.TEXT)) * 2) 
ELSE statement_end_offset END)- statement_start_offset)/2+1)) AS sql_statement, 
     last_execution_time 
FROM sys.dm_exec_query_stats AS s1 
CROSS APPLY sys.dm_exec_sql_text(sql_handle) AS s2) x 
WHERE sql_statement NOT like 'SELECT TOP 50 * FROM(SELECT %' 
--and OBJECTPROPERTYEX(x.objectid,'IsProcedure') = 1 
ORDER BY last_execution_time DESC 
+0

37000 (321) [Microsoft] [ODBC SQL Server Driver] [ SQL Server] "sql_handle" không phải là một lựa chọn gợi ý bảng được công nhận. Nếu nó được dự định như một tham số cho một hàm có giá trị bảng, hãy đảm bảo rằng chế độ tương thích cơ sở dữ liệu của bạn được đặt thành 90. –

+0

Giống như tôi đã nói năm 2005 và chỉ lên, cho 2000 chạy profiler. Lần sau chỉ ra phiên bản máy chủ sql nào bạn đang chạy – SQLMenace

+0

Microsoft SQL Server 2005 - 9.00 –

1

Cách duy nhất tôi biết là để có SQL Server Profiler chạy. Thật không may điều này cần phải được bắt đầu trước khi các truy vấn được thực hiện, vì vậy nếu bạn đang hy vọng để bắt một cái gì đó đã xảy ra trên cơ sở "ad hoc", nó sẽ không phù hợp. Nếu bạn đang cố gắng để theo dõi những gì một đoạn mã đang làm và muốn nắm bắt các truy vấn mà nó thực hiện, nó sẽ làm việc một điều trị.

24

Nếu sử dụng SQL Server 2005 +:

SELECT deqs.last_execution_time AS [Time], dest.TEXT AS [Query] 
FROM sys.dm_exec_query_stats AS deqs 
CROSS APPLY sys.dm_exec_sql_text(deqs.sql_handle) AS dest 
ORDER BY deqs.last_execution_time DESC 

lớn tip từ SQLAuthority!

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