【保存版】2013年度発売全パチスロアプリ一覧(iPhone,iPad)

【SQLServer】保守に便利!SQLServerでテーブル・ビュー等の情報をSQLで取得する。

SQLServerオブジェクトカタログビュー

SQLServerではデータベースの各種設定情報・スキーマ情報等は
ユーザーデータベース同様、
「システムデータベース」というデータベースに格納されています。

管理者はこのシステムデータベースを参照することにより、
データベースの設定内容を確認することが可能です。
SQLServerではシステムデータベースを参照しやすいように
「カタログビュー」といわれるビューが別途定義されています。
このビューを使うと簡単にデータを参照することが可能でき、
また、参照にはSQLを使用するので、SQLに条件を付与することにより
任意のデータを抽出することができます。

少しなじみがうすいかもしれませんが、このカタログビューを
知っているとデータベースの保守等で使えるケースもあるかと思います。

なお、対象となるバージョンはSQLServer2005以降で、
サンプルSQLはSQLServer2008R2で確認しています。

※本エントリの内容はMicrosoftMSDNライブラリの
SQLServer2012用を参考にしています。


・カタログビューとは?


カタログ ビュー (Transact-SQL)
カタログ ビューは、SQL Server データベース エンジンによって使用される情報を返します。 カタログ ビューはカタログ メタデータへの最も一般的なインターフェイスであり、この情報を取得、変換、およびカスタマイズした形式で表示するための、最も効率的な方法となります。したがって、カタログ ビューを使用することをお勧めします。 ユーザーが利用できるすべてのカタログ メタデータがカタログ ビューを通じて公開されています。

【カタログビューの分類】
・AlwaysOn 可用性グループ カタログ ビュー
・リンク サーバーのカタログ ビュー
・変更の追跡カタログ ビュー
・メッセージ (エラー メッセージ) のカタログ ビュー
・CLR アセンブリのカタログ ビュー
・オブジェクト カタログ ビュー
・データベースおよびファイルのカタログ ビュー
・パーティション関数のカタログ ビュー
・データベース メール ビュー
・ポリシー ベースの管理ビュー
・データベース ミラーリングのカタログ ビュー
・リソース ガバナーのカタログ ビュー
・データ コレクターのビュー
・スカラー型のカタログ ビュー
・データ領域
・スキーマのカタログ ビュー
・エンドポイントのカタログ ビュー
・セキュリティのカタログ ビュー
・拡張イベント カタログ ビュー
・Service Broker のカタログ ビュー
・拡張プロパティのカタログ ビュー
・サーバー全体の構成のカタログ ビュー
・FileTable カタログ ビュー
・XML スキーマ (XML 型システム) のカタログ ビュー
・フルテキスト検索およびセマンティック検索カタログ ビュー

分類毎に数多くのビューが定義されています。


・カタログビューからの取得SQLサンプル


SQLServerには実に多くのカタログビューが存在します。
例えば「オブジェクトカタログビュー」には
テーブルやビュー関連のビューが定義されています。
オブジェクト カタログ ビュー (Transact-SQL)

例として、sys.tablesを参照すればテーブルの情報を取得できます。

ここで運用時に使えそうなサンプルSQLを作成してみます。
以下サンプルは任意のデータベースに接続、
もしくは、先頭に以下のコマンドを付与して実行してください。
------------------------------------------------------
USE <database_name>;
GO
------------------------------------------------------

【テーブル (sys.tablesを参照)】
参考:sys.tables (Transact-SQL)

/*テーブルの一覧*/
selset * from sys.tables
where is_ms_shipped = 'False'

/*本日更新されたテーブルの一覧*/
select * from sys.tables
where is_ms_shipped = 'False' and
modify_date = convert(char(10),getdate(),111)

すみません、日付比較の部分ミスっていました。
以下が正しい記述です。(2013/03/07)

select * from sys.tables
where is_ms_shipped = 'False' and
convert(nvarchar, modify_date, 111) = convert(nvarchar, getdate(), 111)

/*テーブル名の頭に「M_」がつくものの一覧*/
selset * from sys.tables where name like 'M_%'



【テーブル列 (sys.columnsを参照)】
参考:sys.columns (Transact-SQL)

/*テーブル列一覧*/
select object_name(object_id) , * from sys.columns
(注意)システムテーブルも抽出されます。ユーザーテーブルのみを
対象とする例は後述。




【ビュー (sys.viewsを参照)】
参考:sys.views (Transact-SQL)

/*ビューの一覧*/
selset * from sys.views

/*本日更新されたビューの一覧*/
select * from sys.views
where modify_date = convert(char(10),getdate(),111)

すみません、日付比較の部分ミスっていました。
以下が正しい記述です。(2013/03/07)

select modify_date,* from sys.views
where convert(nvarchar, modify_date, 111) = convert(nvarchar, getdate(), 111)


【ストアドプロシージャー (sys.proceduresを参照)】
参考:sys.procedures (Transact-SQL)

/*ストアドプロシージャーの一覧*/
select * from sys.procedures
where is_ms_shipped = 'False'

/*本日更新されたストアドプロシージャーの一覧*/
select * from sys.procedures
where is_ms_shipped = 'False' and
modify_date = convert(char(10),getdate(),111)

すみません、日付比較の部分ミスっていました。
以下が正しい記述です。(2013/03/07)

select * from sys.procedures
where is_ms_shipped = 'False' and
convert(nvarchar, modify_date, 111) = convert(nvarchar, getdate(), 111)


応用編として、sys.objectsビューを参照すると、
さらに詳細なデータを取得することができます。
参考:sys.objects (Transact-SQL)

例えば、
/*
ユーザーテーブルの項目を列挙
sys.objectsを参照し、type='U'(ユーザー定義テーブル)
のみ抽出
*/
select
object_name(sys.columns.object_id),
sys.columns.column_id,
sys.columns.name
from
sys.columns inner join sys.objects on
sys.columns.object_id = sys.objects.object_id
where
sys.objects.type = 'U'
order by
object_name(sys.columns.object_id),
column_id


カタログビューを使えば、テーブルの型やインデックス等
ほとんどの情報が取得可能です。
うまく使えば結構便利ではないでしょうか。

また、以下のMicrosoftのページではカタログビューを使った
SQLのサンプルが多く掲載されており非常に有用です。
一度目をとおしておくことをおすすめします。
SQL Server システム カタログに対するクエリに関してよく寄せられる質問
[Google PR]

Twitterはじめました。プラプラ | Twitter

<< 【XperiaZ本】これで素人卒業!XperiaZを「とことん使いこなす」ための書籍まとめ。
【iOSパチスロ】ついにミリオンゴッドのZEUSバージョン完全版がリリース!! >>

[関連エントリ 最新5]

[Google PR]


[最新エントリ 5]

>>トップページ
人気カテゴリ:AccessTips SQLServer CakePHP iPad
過去ログ(全記事一覧)

コメント
コメントする(お気軽にどうぞ)









この記事のトラックバックURL
トラックバック
カテゴリー
プロフィール
お問い合わせ
Powered by NINJA TOOLS
links
recent comment
  • 【Access】vbaでhmacが正しく計算できた!!
    まさ (06/01)
  • 【Access】AccessReportMailメール送信時のポートを25から587へ
    わら (05/31)
  • 【SQLServer】超シンプル!再帰CTE(共通テーブル式)で連続データを作成する。
    sazi (09/08)
  • 【あまっちゃお】Amazon商品検索「あまっちゃお」プロジェクト始動。Ver00-06-00 β
    カメちゃん (07/31)
  • 【Access】あれ?DoCmd.RunCommand acCmdSaveRecordの内部仕様が変わった?
    花姉 (03/17)
  • 【Access】実行中のmdb(自分自身)をバックアップコピーする方法。
    亀 (02/06)
  • 【雑記】Amazonでの注文時、TMGさん発送にご注意を。納期を守れない可能性あり!
    管理人 (01/31)
  • 【雑記】Amazonでの注文時、TMGさん発送にご注意を。納期を守れない可能性あり!
    あ (01/31)
  • 【雑記】Amazonでの注文時、TMGさん発送にご注意を。納期を守れない可能性あり!
    K (11/13)
  • 【VAIOP】VaioXと両持ちできるものすっっごくマニアックなケース。当たり前ですが在庫限り。(笑)
    管理人 (08/04)
recent trackback
  • 【Access】2003安全でない式がブロックされていませんとセキュリティーレベル。
    awgs Foundry (10/29)
  • 【VAIOtypeP】液晶保護シートは、新車のカバーではない。レイアウト社液晶/天板保護フィルムセットRT-VP1FS1
    XMLがキライ。 (04/09)
  • Vistaから、LinkStation(NAS)にアクセスできません。
    そのほかいろいろ (09/06)