sql >> データベース >  >> RDS >> Sqlserver

SQLServerデータベース内のすべてのビューを一覧表示する4つの方法

    この記事では、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      |
    +-------------------+---------------+--------------+--------------+-----------+
    

    1. Ubuntu16.04でのPostgreSQLデータベースの作成と削除

    2. Oracle10g-最適化WHEREISNOT NULL

    3. SQLServerのデータベースメールプロファイルに関連付けられているアカウントを一覧表示する

    4. 日常的なコンテンツバックアップの推奨事項