[SQL] TSQL : 마지막 쿼리의 란을 받기
SQLTSQL : 마지막 쿼리의 란을 받기
지난 몇 쿼리에 대한 SQL 텍스트를 얻을 수있는 방법이 있나요?
나는 2005 Microsoft SQL Server를 사용하고 있습니다
해결법
-
==============================
1.예, 좀 봐, 이것은 당신에게 50 가장 최근에 실행 된 SQL 문을 줄 것이다
예, 좀 봐, 이것은 당신에게 50 가장 최근에 실행 된 SQL 문을 줄 것이다
SQL 2005 만 백업
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
-
==============================
2.SQL 서버 2005 +를 사용하는 경우 :
SQL 서버 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
SQLAuthority에서 멋진 팁!
-
==============================
3.제가 알고있는 유일한 방법은 SQL Server 프로파일 러를 실행하는 것입니다. 당신의이 "임시"으로 일어났다 캐치 뭔가를 바라고 그렇게 불행하게도이 필요, 실행되는 쿼리 이전에 시작하기 위해서는 적합하지 않을 것입니다. 당신은 코드 조각이 일을하고 그것을 실행하는 쿼리를 캡처 할 무엇을 추적하려는 경우, 그것은 치료를 작동합니다.
제가 알고있는 유일한 방법은 SQL Server 프로파일 러를 실행하는 것입니다. 당신의이 "임시"으로 일어났다 캐치 뭔가를 바라고 그렇게 불행하게도이 필요, 실행되는 쿼리 이전에 시작하기 위해서는 적합하지 않을 것입니다. 당신은 코드 조각이 일을하고 그것을 실행하는 쿼리를 캡처 할 무엇을 추적하려는 경우, 그것은 치료를 작동합니다.
-
==============================
4.당신이 매개 변수 값을 검사해야하는 경우,이 추가는
XML을 반환 당신이 매개 변수 값을 검사해야하는 경우,이 추가는
XML을 반환 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, SUBSTRING( s3.query_plan,CHARINDEX('<ParameterList>',s3.query_plan), CHARINDEX('</ParameterList>',s3.query_plan) + LEN('</ParameterList>') - CHARINDEX('<ParameterList>',s3.query_plan) ) AS Parameters, last_execution_time FROM sys.dm_exec_query_stats AS s1 CROSS APPLY sys.dm_exec_sql_text(sql_handle) AS s2 CROSS APPLY sys.dm_exec_text_query_plan(s1.plan_handle, s1.statement_start_offset, s1.statement_end_offset) AS s3 ) x WHERE sql_statement NOT like 'SELECT TOP 50 * FROM(SELECT %' ORDER BY last_execution_time DESC
Prettified 버전
from https://stackoverflow.com/questions/3579092/tsql-get-last-queries-ran by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 어떻게 / 죽일 즉시 긴 SQL 쿼리를 중지? (0) | 2020.07.20 |
---|---|
[SQL] 선택하고 하나의 검색어로 데이터베이스 레코드를 업데이트 (0) | 2020.07.20 |
[SQL] 그것은 SQL 서버에 임시 테이블을 만들기위한 #을 사용할 필요가 있습니까? (0) | 2020.07.20 |
[SQL] 어떻게 SQL 문자열의 첫 번째 문자를 얻으려면? (0) | 2020.07.20 |
[SQL] T-SQL에서 문자열의 마지막 문자를 제거? (0) | 2020.07.20 |