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;
- 現在接続しているユーザーセッションを確認できます
- 接続数の監視やトラブル発生時の調査に使える



コメント