【SQL Server】SSMSで使える便利クエリ9選|DB調査・トラブル対応に役立つSQL集

SQL

SQL Server Management Studio(SSMS)を使っていると、「あれ、あの情報ってどうやって調べるんだっけ?」という瞬間があると思います。

今回は、そんなときに役立つちょっとした便利なクエリ”をまとめました。
定番クエリから、実務での調査やトラブル対応に使えるものまで、目的別にまとめています。

指定テーブルのインデックス一覧を確認したい

SELECT 
    t.name AS TableName,
    i.name AS IndexName,
    i.type_desc,
    c.name AS ColumnName
FROM 
    sys.indexes i
    INNER JOIN sys.index_columns ic 
    ON i.object_id = ic.object_id 
    AND i.index_id = ic.index_id
    INNER JOIN sys.columns c 
    ON ic.object_id = c.object_id 
    AND ic.column_id = c.column_id
    INNER JOIN sys.tables t 
    ON i.object_id = t.object_id
WHERE 
    t.name = 'your_table_name';
  • どの列にどのようなインデックスが設定されているか確認できます
  • パフォーマンス改善やチューニング時の調査に便利

カラムの型やNULL許可を確認したい

SELECT 
    COLUMN_NAME, 
    DATA_TYPE, 
    CHARACTER_MAXIMUM_LENGTH, 
    IS_NULLABLE
FROM 
    INFORMATION_SCHEMA.COLUMNS
WHERE 
    TABLE_NAME = 'your_table_name';
  • テーブルのカラム情報を一覧で確認できます
  • GUIで開くより早く確認でき、さらにスクリプトで一覧化もできます
  • データ移行や仕様確認のときに役立つ

主キー制約がある列を調べたい

SELECT 
    KU.TABLE_NAME,
    KU.COLUMN_NAME,
    KU.CONSTRAINT_NAME
FROM 
    INFORMATION_SCHEMA.TABLE_CONSTRAINTS AS TC
JOIN 
    INFORMATION_SCHEMA.KEY_COLUMN_USAGE AS KU
    ON TC.CONSTRAINT_NAME = KU.CONSTRAINT_NAME
WHERE 
    TC.CONSTRAINT_TYPE = 'PRIMARY KEY'
    AND KU.TABLE_NAME = 'your_table_name';
  • 主キーが設定されている列を確認できます
  • 単一キーでも複合キーでも対応
  • 設計変更前の確認やER図なしのDB構造把握に便利

ユーザー定義関数(UDF)の一覧を確認したい

SELECT * 
FROM sys.objects 
WHERE type IN ('FN', 'IF', 'TF');

FN:スカラー関数(値を返す)
IF:インライン テーブル値関数
TF:マルチステートメント テーブル関数

最近実行されたクエリの履歴を確認したい

SELECT 
    TOP 20
    qs.creation_time,
    qs.last_execution_time,
    qt.TEXT
FROM 
    sys.dm_exec_query_stats AS qs
    CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) AS qt
ORDER BY 
    qs.last_execution_time DESC;
  • 最近実行されたSQLを確認できます
  • 管理者権限が必要な場合があるので注意

トリガーの一覧を取得したい

SELECT 
    name, 
    parent_id,
    OBJECT_NAME(parent_id) AS TableName,
    type_desc 
FROM 
    sys.triggers;
  • データベース内のトリガーを一覧表示します
  • 複雑なテーブルの動作把握に役立つ

データベースのサイズを確認したい

EXEC sp_spaceused;
  • 現在のデータベース全体の使用容量がわかる
  • 表示内容:データサイズ、ログサイズ、空き領域など

バックアップの最新実行日時を確認したい

SELECT 
    database_name,
    MAX(backup_finish_date) AS last_backup
FROM 
    msdb.dbo.backupset
WHERE 
    type = 'D'  -- 完全バックアップ
GROUP BY 
    database_name;
  • 各データベースの最後のバックアップ日時を確認できます
  • 本番環境では定期的な確認に使える

現在接続中のセッション一覧を確認したい

SELECT 
    session_id, 
    login_name, 
    host_name, 
    program_name, 
    login_time
FROM 
    sys.dm_exec_sessions
WHERE 
    is_user_process = 1;
  • 現在接続しているユーザーセッションを確認できます
  • 接続数の監視やトラブル発生時の調査に使える

コメント

タイトルとURLをコピーしました