たまに仕事で使う時があるので、自分用の備忘録として書いておきます。
なお、これらのSQLを発行する際は特別な権限が必要な場合があります。
SQL Serverでテーブルやストアドの一覧を取得する
目的のデータベースにて以下のSQLを実行します。
typeが略称になっていて分かりにくいので、自分用に再分類しています。
SELECT name, type, case type when 'AF' then 'Function' --集計関数 (CLR) when 'C' then 'Constraint' --CHECK 制約 when 'D' then 'Constraint' --DEFAULT (制約またはスタンドアロン) when 'F' then 'Constraint' --FOREIGN KEY 制約 when 'FN' then 'Function' --SQL スカラ関数 when 'FS' then 'Function' --アセンブリ (CLR) スカラ関数 when 'FT' then 'Function' --アセンブリ (CLR) テーブル値関数 when 'IF' then 'Function' --SQL インライン テーブル値関数 when 'IT' then 'Table' --内部テーブル when 'K' then 'Constraint' --PRIMARY KEY 制約 when 'P' then 'Procedure' --SQL ストアド プロシージャ when 'PC' then 'Procedure' --アセンブリ (CLR) ストアド プロシージャ when 'PG' then 'Plan Guide' --プラン ガイド when 'PK' then 'Constraint' --PRIMARY KEY 制約 when 'R' then 'Rule' --ルール (旧形式、スタンドアロン) when 'RF' then 'Procedure' --レプリケーション フィルタ プロシージャ when 'S' then 'Table' --システム ベース テーブル when 'SN' then 'Synonym' --シノニム when 'SQ' then 'Service Queue' --サービス キュー when 'TA' then 'Trigger' --アセンブリ (CLR) DML トリガ when 'TF' then 'Function' --SQL テーブル値関数 when 'TR' then 'Trigger' --SQL DML トリガ when 'U' then 'Table' --テーブル (ユーザー定義) when 'UQ' then 'Constraint' --UNIQUE 制約 when 'V' then 'View' --ビュー when 'X' then 'Procedure' --拡張ストアド プロシージャ else '[UNKNOWN]' end as type_name FROM sysobjects ORDER BY upper(name)
なお、インスタンスに存在するデータベースの一覧を取得する際は以下のSQLを実行します。
SELECT name FROM sys.databases ORDER BY upper(name)
どうでもいいですけど、インスタンスとかデータベースとか、SQL Serverの専門用語は初めて見た人が混乱しそうな名前が付いている気がします。。。
参考サイト
SQL Server内のシステム情報に関連するその他のテーブル
http://msdn.microsoft.com/en-us/library/ms187997.aspx
テーブル定義(カラム名とかデータ型とか)もうまくやれば取得できるかも
http://cs.albis.jp/blogs/ms-18e/archive/2006/04/05/94.aspx
Oracleでテーブルやストアドの一覧を取得する
以下のようなSQLを実行します。
Oracleのobject_typeは読めば分かるような文字列が表示されていたはずです。
SELECT owner, object_name, object_type FROM all_objects ORDER BY owner, object_name
参考サイト
all_objectsテーブルの詳細
http://download.oracle.com/docs/cd/B14117_01/server.101/b10755/statviews_1102.htm