この記事では、SQLServerデータベース内のユーザー定義ビューのリストを返す4つの方法を紹介します。
システムビューのみ、またはユーザー定義のとの両方を表示する場合 システムビューについては、SQL Serverのsys.views、sys.system_views、およびsys.all_viewsの違いを参照してください。
オプション1-VIEWS情報スキーマビュー
VIEWS
を使用できます データベース内のすべてのユーザー定義ビューのリストを取得するための情報スキーマビュー。
USE Music; SELECT TABLE_SCHEMA, TABLE_NAME FROM INFORMATION_SCHEMA.VIEWS;
結果:
+----------------+--------------+ | TABLE_SCHEMA | TABLE_NAME | |----------------+--------------| | dbo | RockAlbums | | dbo | JazzAlbums | | dbo | BluesAlbums | +----------------+--------------+
ビューの定義を返す
INFORMATION_SCHEMA.VIEWS
ビューにはVIEW_DEFINITION
もあります 列なので、必要に応じて各ビューの定義を簡単に返すことができます。
SELECT VIEW_DEFINITION FROM INFORMATION_SCHEMA.VIEWS;
オプション2–sys.viewsシステムカタログビュー
ビューのリストを返す別の方法は、sys.views
にクエリを実行することです。 システムカタログビュー。
USE Music; SELECT SCHEMA_NAME(schema_id) AS [Schema], Name FROM sys.views;
結果:
+----------+-------------+ | Schema | Name | |----------+-------------| | dbo | RockAlbums | | dbo | JazzAlbums | | dbo | BluesAlbums | +----------+-------------+
ビューの定義を返す
sys.view
ビューには、オブジェクトの定義の列は含まれていません。各ビューの定義を返したい場合は、sys.sql_modules
と結合できます。 システムビュー。
例:
SELECT definition FROM sys.views v INNER JOIN sys.sql_modules m ON v.object_id = m.object_id;
オプション3–sys.objectsシステムカタログビュー
ビューのリストを返す別の方法は、sys.objects
にクエリを実行することです。 システムカタログビュー。
SELECT SCHEMA_NAME(schema_id) AS [Schema], name FROM sys.objects WHERE type = 'V';
結果:
+----------+-------------+ | Schema | Name | |----------+-------------| | dbo | RockAlbums | | dbo | JazzAlbums | | dbo | BluesAlbums | +----------+-------------+
タイプV
「表示」用です。これを行う別の方法は、type_desc
でフィルタリングすることです。 列:
SELECT SCHEMA_NAME(schema_id) AS [Schema], name FROM sys.objects WHERE type_desc = 'VIEW';
ビューの定義を返す
sys.objects
ビューには、オブジェクトの定義の列は含まれていません。各ビューの定義を返したい場合は、sys.sql_modules
と結合できます。 システムビュー。
例:
SELECT definition FROM sys.objects o INNER JOIN sys.sql_modules m ON o.object_id = m.object_id WHERE type = 'V';
オプション4–sp_tablesストアドプロシージャ
sp_tables
ストアドプロシージャは、現在の環境でクエリできるオブジェクトのリストを返します。これには、シノニムオブジェクトを除くすべてのテーブルまたはビューが含まれます。
@table_type
を使用して、結果をビューのみに絞り込むことができます パラメータ。特定の所有者またはカタログのみに絞り込むこともできます。
次のコードを実行すると、システムビューを含む、現在のデータベース内のすべてのビューが返されます。
EXEC sp_tables @table_type = "'VIEW'";
リストが長いため、ここでは結果を示しません。
ここでは、特定のデータベース所有者に絞り込まれています:
EXEC sp_tables @table_owner = 'dbo', @table_type = "'VIEW'";
結果:
+-------------------+---------------+--------------+--------------+-----------+ | TABLE_QUALIFIER | TABLE_OWNER | TABLE_NAME | TABLE_TYPE | REMARKS | |-------------------+---------------+--------------+--------------+-----------| | Music | dbo | BluesAlbums | VIEW | NULL | | Music | dbo | JazzAlbums | VIEW | NULL | | Music | dbo | RockAlbums | VIEW | NULL | +-------------------+---------------+--------------+--------------+-----------+