SQL Serverで過去のSQL実行履歴を検索する方法は?

SQL Server内では、過去のSQL実行記録を取得するためにシステムテーブルをクエリすることができます。以下はいくつかのよく使用されるシステムテーブルとビューです。

  1. sys.dm_exec_query_statsは、最近実行されたクエリに関する統計情報を返すビューであり、クエリの実行計画やCPU使用状況、メモリ使用状況などが含まれています。
SELECT
    *
FROM
    sys.dm_exec_query_stats
  1. sys.dm_exec_sql_textは、SQL文とクエリの実行プランを含むSQLステートメントの詳細情報を返すビューです。
SELECT
    *
FROM
    sys.dm_exec_sql_text(PLAN_HANDLE)

PLAN_HANDLEはsys.dm_exec_query_statsビューから取得した実行計画ハンドルです。

  1. sys.dm_exec_requestsは、現在実行中のリクエストに関する情報を返すビューであり、実行中のSQLステートメント、進行状況、ウェイトタイプなどを含んでいます。
SELECT
    *
FROM
    sys.dm_exec_requests
  1. sys.dm_exec_sessionsは、SQL Serverに現在接続しているセッションに関する情報を返すビューです。セッションIDやログイン名、アプリケーション名などが含まれます。
SELECT
    *
FROM
    sys.dm_exec_sessions
  1. sys.dm_exec_connectionsは、現在SQL Serverに接続されている接続に関する情報を返すビューであり、接続ID、クライアントIPアドレス、接続状態などが含まれています。
SELECT
    *
FROM
    sys.dm_exec_connections
  1. sys.dm_exec_query_plan関数は、指定されたSQLステートメントの実行計画を返します。
SELECT
    *
FROM
    sys.dm_exec_query_plan(PLAN_HANDLE)

PLAN_HANDLEはsys.dm_exec_query_statsビューから取得された実行計画ハンドルです。

SQL Serverのメモリに保持されるデータのシステムテーブルとビューは一時的なものです。SQL Serverが再起動されるかキャッシュがクリアされると、その履歴は失われます。長期的に履歴を保存する必要がある場合は、SQL Serverのトレース機能やサードパーティーのツールを検討してください。

bannerAds