スポンサーリンク
SQL Server

【SQL Server】保守・調査で役立つ定番SQLまとめ|テーブル定義・関数・ストアド・Viewの確認方法

SQL SQL Server
この記事は約5分で読めます。

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は、私自身が現場で繰り返し使っているものばかりです。必要なときにすぐ使えるよう、ぜひブックマークや社内共有に活用してください。

コメント

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