データベース内のオブジェクトは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())
検証環境
- Microsoft SQL Server Express Edition (64-bit) プラットフォーム:NT x64 バージョン:10.0.2531.0
- Microsoft Windows 7 Professional Service Pack 1 (Microsoft Windows NT 6.1 (7601))