データベース内の全ビュー(view) を取得する

データベース内の全ビュー(view) を取得するには?

データベース内の全ビュー(view) の一覧を取得したり、ビューの名前の一部を指定して検索したりしたいような時があるかもしれません。

何通りか方法があるので、今回は、そんな時にに使えるスクリプトをご紹介します。

データベース内の全ビュー(view)を取得する

まず、sys.views というシステムカタログビューから現在のデータベース内のユーザー定義ビューの一覧を取得することができます。

SELECT	OBJECT_SCHEMA_NAME(object_id) AS SchemaName,
	name AS ViewName
FROM	sys.views
ORDER BY OBJECT_SCHEMA_NAME(object_id),
	 name;

データベース内の全ビュー(view) を取得する 1


先ほどの sys.views は、sys.sysobjects というシステムカタログビューの type = 'V' の結果に、View 用のカラムを何個か足したものなので、以下のようにしてもビューの一覧を取得することができます。

SELECT	OBJECT_SCHEMA_NAME(object_id) AS SchemaName,
	name AS ViewName
FROM	sys.objects
WHERE	type = 'V'
ORDER BY OBJECT_SCHEMA_NAME(object_id),
	 name;

データベース内の全ビュー(view) を取得する 2


他には、INFORMATION_SCHEMA.VIEWS というシステムインフォメーションスキーマービューでも、ユーザー定義のビューの一覧を取得できます。

SELECT	*
FROM	INFORMATION_SCHEMA.VIEWS
ORDER BY TABLE_CATALOG,
	 TABLE_SCHEMA,
	 TABLE_NAME;

データベース内の全ビュー(view) を取得する 3


また、INFORMATION_SCHEMA.TABLES というシステムインフォメーションスキーマービューの TABLE_TYPE = 'VIEW' でも取得できます。

SELECT	*
FROM	INFORMATION_SCHEMA.TABLES
WHERE	TABLE_TYPE ='VIEW'
ORDER BY TABLE_CATALOG,
	 TABLE_SCHEMA,
	 TABLE_NAME;

データベース内の全ビュー(view) を取得する 4


おまけに、現在のデータベースのユーザー定義ビュー + システムビューを取得したい場合は、sys.all_views を使って取得可能です。

SELECT	OBJECT_SCHEMA_NAME(object_id) AS ObjectName,
	name AS ViewName
FROM	sys.all_views
ORDER BY OBJECT_SCHEMA_NAME(object_id),
	 name;

データベース内の全ビュー(view) を取得する 5


いろいろありますが、View のスキーマと名前だけが必要な時はどれを使っても良いと思います。 残りのカラムが違いますので、必要に応じて確認してください。

どの方法でも、現在のユーザーにパーミッションがある view しか取得できませんので、十分権限のあるユーザーでログインして実行してくださいね!

© 2010-2024 SQL Server 入門