SQL Serverの保守や調査、システム切替時などで「テーブルの定義を確認したい」「関数やストアドが更新されたか知りたい」といった場面はよくあります。この記事では、私自身が現場で頻繁に使っているSQLを備忘録としてまとめました。
✅ SQL Serverのバージョンを確認する
現在接続しているSQL Serverのバージョンや、適用されているパッチレベルを確認するには以下のSQLが便利です。
SELECT @@version✅ テーブル一覧と列定義を取得するSQL
テーブル定義の確認や、現在存在しているテーブル・列情報を一覧で取得したいときに使います。除外したいテーブルがある場合は WHERE 句で NOT LIKE を使って調整可能です。
-- テーブル一覧と列定義
SELECT * FROM (
SELECT
(SELECT name FROM sys.schemas WHERE T.schema_id = schema_id) AS スキーマ,
T.name AS 表名,
C.column_id AS 列番,
C.name AS 列名,
Y.name AS 型,
CASE
WHEN Y.name IN ('nvarchar', 'nchar') THEN C.max_length / 2
WHEN C.precision = 0 THEN C.max_length
ELSE C.precision
END AS 桁,
C.scale AS 小数桁,
C.max_length AS サイズ(バイト),
C.is_nullable AS Null可,
object_definition(C.default_object_id) AS デフォルト値,
(SELECT COUNT(*) FROM sys.index_columns ic
WHERE ic.column_id = C.column_id AND C.object_id = ic.object_id
AND EXISTS (
SELECT * FROM sys.key_constraints kc
WHERE kc.type = 'PK'
AND kc.parent_object_id = T.object_id
AND kc.unique_index_id = ic.index_id
)) AS PK,
ep.value AS 説明
FROM sys.tables AS T
INNER JOIN sys.columns AS C ON T.object_id = C.object_id
INNER JOIN sys.types AS Y ON C.system_type_id = Y.system_type_id AND C.user_type_id = Y.user_type_id
LEFT OUTER JOIN sys.extended_properties AS ep ON C.object_id = ep.major_id AND C.column_id = ep.minor_id
) z
WHERE z.表名 NOT LIKE ('除外したいテーブル')
ORDER BY z.スキーマ, z.表名, z.列番
✅ 共通関数の最終更新日を確認するSQL
共通関数の変更履歴を確認したいときに便利です。modify_date が最後に定義を変更した日付になります。
-- 共通関数一覧と更新日
SELECT name,
type,
create_date,
modify_date
FROM sys.objects
WHERE type = 'FN'
ORDER BY modify_date✅ ストアドプロシージャの一覧と更新日を確認するSQL
ストアドプロシージャの定義変更や追加状況を確認する際に使います。
-- ストアドプロシージャ一覧
SELECT name,
create_date,
modify_date
FROM sys.objects
WHERE type = 'P'
ORDER BY modify_date
✅ Viewの一覧と更新日を確認するSQL
Viewの定義変更を確認したいときはこちら。
-- View一覧
SELECT name,
create_date,
modify_date
FROM sys.objects
WHERE type = 'V'
ORDER BY modify_date✅ sys.objectsテーブルの活用ポイント
sys.objects は関数・ストアド・Viewなどのオブジェクト情報を一括で管理しているため、保守や調査業務では非常に重宝します。type を切り替えるだけで目的のオブジェクトを絞り込めるので、覚えておくと便利です。
📝 まとめ
SQL Serverの保守・調査業務では、定番SQLを知っているだけで作業効率が大きく変わります。この記事で紹介したSQLは、私自身が現場で繰り返し使っているものばかりです。必要なときにすぐ使えるよう、ぜひブックマークや社内共有に活用してください。

コメント