[SQL Server]データベース内のオブジェクト(テーブル、ビュー、ストアドなど)一覧を取得する

データベース内のオブジェクトはsys.objectsテーブルをSELECTすると取得できます。

データベース内オブジェクトを検索するSQLの例

SELECT  CASE type
            WHEN 'AF' THEN '集計関数 (CLR)'
            WHEN 'C'  THEN 'CHECK 制約'
            WHEN 'D'  THEN 'DEFAULT (制約またはスタンドアロン)'
            WHEN 'F'  THEN 'FOREIGN KEY 制約'
            WHEN 'FN' THEN 'SQL スカラー関数'
            WHEN 'FS' THEN 'アセンブリ (CLR) スカラー関数'
            WHEN 'FT' THEN 'アセンブリ (CLR) テーブル値関数'
            WHEN 'IF' THEN 'SQL インライン テーブル値関数'
            WHEN 'IT' THEN '内部テーブル'
            WHEN 'P'  THEN 'SQL ストアド プロシージャ'
            WHEN 'PC' THEN 'アセンブリ (CLR) ストアド プロシージャ'
            WHEN 'PG' THEN 'プラン ガイド'
            WHEN 'PK' THEN 'PRIMARY KEY 制約'
            WHEN 'R'  THEN 'ルール (旧形式、スタンドアロン)'
            WHEN 'RF' THEN 'レプリケーション フィルター プロシージャ'
            WHEN 'S'  THEN 'システム ベース テーブル'
            WHEN 'SN' THEN 'シノニム'
            WHEN 'SQ' THEN 'サービス キュー'
            WHEN 'TA' THEN 'アセンブリ (CLR) DML トリガー'
            WHEN 'TF' THEN 'SQL テーブル値関数'
            WHEN 'TR' THEN 'SQL DML トリガー'
            WHEN 'TT' THEN 'テーブルの種類'
            WHEN 'U'  THEN 'テーブル (ユーザー定義)'
            WHEN 'UQ' THEN 'UNIQUE 制約'
            WHEN 'V'  THEN 'ビュー'
            WHEN 'X'  THEN '拡張ストアド プロシージャ'
        END AS type_detail
        ,*
FROM sys.objects

結果例

name object_id principal_id schema_id parent_object_id type type_desc create_date modify_date is_ms_shipped is_published is_schema_published
sysrscols 3 NULL 4 0 S SYSTEM_TABLE 20:01.0 20:01.0 1 0 0
sysrowsets 5 NULL 4 0 S SYSTEM_TABLE 20:00.6 20:01.0 1 0 0
sysallocunits 7 NULL 4 0 S SYSTEM_TABLE 20:00.6 20:01.0 1 0 0
sysfiles1 8 NULL 4 0 S SYSTEM_TABLE 13:38.1 13:38.1 1 0 0
syspriorities 17 NULL 4 0 S SYSTEM_TABLE 20:01.2 51:54.4 1 0 0
sysfgfrag 19 NULL 4 0 S SYSTEM_TABLE 20:00.9 20:01.0 1 0 0
sysphfg 23 NULL 4 0 S SYSTEM_TABLE 20:01.0 20:01.0 1 0 0
sysprufiles 24 NULL 4 0 S SYSTEM_TABLE 20:01.0 20:01.0 1 0 0
sysftinds 25 NULL 4 0 S SYSTEM_TABLE 20:00.7 20:00.7 1 0 0
sysowners 27 NULL 4 0 S SYSTEM_TABLE 20:00.7 51:54.4 1 0 0

主要列の説明

列名 説明
name 名称。テーブルであればテーブル名、ストアドであればストアド名が格納されています。
object_id id。一意です。parent_object_idと結合すると子のオブジェクトがわかります。
parent_object_id object_idと結合すると親のオブジェクトがわかります。最上位の親は0が格納されます。
type 種類。2文字のアルファベットが格納されており、意味は上記のサンプルSQLのとおりです。
type_desc 種類の説明。typeをわかりやすく示した文字列です。
create_date 作成日時。
modify_date 変更日時。変更がない場合はcreate_dateと同じ日時が格納されています。(テーブル内のレコードが追加・変更・削除されても変更日時は変わりません。)

利用例1 - データベース内のテーブルを取得

type項目にオブジェクトの種類が格納されているので、テーブルのみ取得したい場合は次のように条件を指定して検索します。
SELECT * FROM sys.objects WHERE type = 'U'

利用例2 - 一ヶ月以内に変更されたオブジェクトを取得

create_dateにオブジェクトの作成日、modify_dateに変更された日が格納されています。
SELECT * FROM sys.objects
    WHERE modify_date > DATEADD(MONTH, -1, GETDATE())

検証環境

関連ページ