복붙노트

[SQL] TSQL : 마지막 쿼리의 란을 받기

SQL

TSQL : 마지막 쿼리의 란을 받기

지난 몇 쿼리에 대한 SQL 텍스트를 얻을 수있는 방법이 있나요?

나는 2005 Microsoft SQL Server를 사용하고 있습니다

해결법

  1. ==============================

    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. ==============================

    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. ==============================

    3.제가 알고있는 유일한 방법은 SQL Server 프로파일 러를 실행하는 것입니다. 당신의이 "임시"으로 일어났다 캐치 뭔가를 바라고 그렇게 불행하게도이 필요, 실행되는 쿼리 이전에 시작하기 위해서는 적합하지 않을 것입니다. 당신은 코드 조각이 일을하고 그것을 실행하는 쿼리를 캡처 할 무엇을 추적하려는 경우, 그것은 치료를 작동합니다.

    제가 알고있는 유일한 방법은 SQL Server 프로파일 러를 실행하는 것입니다. 당신의이 "임시"으로 일어났다 캐치 뭔가를 바라고 그렇게 불행하게도이 필요, 실행되는 쿼리 이전에 시작하기 위해서는 적합하지 않을 것입니다. 당신은 코드 조각이 일을하고 그것을 실행하는 쿼리를 캡처 할 무엇을 추적하려는 경우, 그것은 치료를 작동합니다.

  4. ==============================

    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 버전

  5. from https://stackoverflow.com/questions/3579092/tsql-get-last-queries-ran by cc-by-sa and MIT license