ビューに関する情報の取得

適用対象:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)

SQL Server Management Studio または Transact-SQL を使って、SQL Server のビューの定義やプロパティに関する情報を表示できます。 ビューのデータが元のテーブルからどのように抽出されているのかを理解したり、ビューで定義されているデータを確認するために、ビューの定義を調べたい場合があります。

重要

ビューから参照しているオブジェクトの名前を変更する場合は、ビューのテキストに新しいオブジェクト名が反映されるようにビューを変更する必要があります。 オブジェクト名を変更する前には、まずオブジェクトの依存関係を表示して、その変更により影響を受けるビューがないかどうかを確認してください。

このトピックの内容

始める前に

セキュリティ

アクセス許可

sp_helptext を使用してビューの定義を返すには、 public ロールのメンバーシップが必要です。 sys.sql_expression_dependencies を使用してビューのすべての依存関係を見つけるには、データベースに対する VIEW DEFINITION 権限とデータベースの sys.sql_expression_dependencies に対する SELECT 権限が必要です。 SELECT OBJECT_DEFINITION で返されるようなシステム オブジェクトの定義は公開されます。

SQL Server Management Studio を使用する

オブジェクト エクスプローラーを使用してビューのプロパティを取得する

  1. オブジェクト エクスプローラーで、プロパティを表示するビューを含むデータベースの横にあるプラス記号を選択します。次に、プラス記号をクリックして [ビュー] フォルダーを展開します。

  2. プロパティを表示するビューを右クリックし、 [プロパティ]を選択します。

    [ビューのプロパティ] ダイアログ ボックスに次のプロパティが表示されます。

    データベース
    このビューを含むデータベースの名前です。

    [サーバー]
    現在のサーバー インスタンスの名前です。

    User
    この接続のユーザーの名前です。

    Created date (作成日)
    ビューが作成された日付を表示します。

    Name
    現在のビューの名前です。

    スキーマ
    ビューを所有するスキーマを表示します。

    [システム オブジェクト]
    ビューがシステム オブジェクトかどうかを指定します。 値は True と False です。

    [ANSI NULL]
    オブジェクトが ANSI NULL オプションで作成されたかどうかを指定します。

    Encrypted
    ビューが暗号化されているかどうかを指定します。 値は True と False です。

    [引用符で囲まれた識別子]
    オブジェクトが引用符で囲まれた識別子オプションで作成されたかどうかを指定します。

    [スキーマ バインド]
    ビューがスキーマ バインドされているかどうかを指定します。 値は True と False です。 スキーマ バインド ビューの詳細については、「ビューの作成 (Transact-SQL)」の SCHEMABINDING のトピックを参照してください。

ビュー デザイナー ツールを使用したビューのプロパティの取得

  1. オブジェクト エクスプローラーで、プロパティを表示するビューを含むデータベースを展開します。次に、 [ビュー] フォルダーを展開します。

  2. プロパティを表示するビューを右クリックし、 [デザイン]を選択します。

  3. ダイアグラム ペインの空白領域を右クリックし、[プロパティ]を選択します。

    [プロパティ] ウィンドウに次のプロパティが表示されます。

    [(名前)]
    現在のビューの名前です。

    データベース名
    このビューを含むデータベースの名前です。

    説明
    現在のビューの簡単な説明です。

    スキーマ
    ビューを所有するスキーマを表示します。

    [サーバー名]
    現在のサーバー インスタンスの名前です。

    [スキーマにバインド]
    このビューに関連する既定のオブジェクトをユーザーが変更した結果ビュー定義が無効化されるのを防止します。

    決定的
    選択した列のデータ型を明確に決定できるかどうかが表示されます。

    [DISTINCT 値]
    クエリでビューの重複する値を除外することを指定します。 このオプションは、テーブルの一部の列だけを使用するときに、使用する列に重複した値が含まれる可能性のある場合、または 2 つ以上のテーブルを結合するプロセスによって結果セットに重複した行が生成される場合に便利です。 このオプションを選択することは、SQL ペインでステートメントに DISTINCT という単語を挿入することと同じです。

    [GROUP BY 拡張子]
    集計クエリに基づくビューの追加オプションが使用できるように指定します。

    [すべての列を出力]
    選択したビューによってすべての列が返されるかどうかを示します。 これは、ビューの作成時に設定されます。

    [SQL コメント]
    SQL ステートメントの説明を表示します。 説明全体を表示したり、説明を編集したりするには、説明を選択して、プロパティの右側にある省略記号 ([...]) を選択します。 ビューの使用者やビューをいつ使用するかなどの情報をコメントに含めることもできます。

    [TOP の指定]
    展開すると、 [TOP][式][パーセント]、および [With Ties] の各プロパティのプロパティが表示されます。

    [(Top)]
    ビューに TOP 句が含まれるように指定します。この場合、最初の n 行または最初の n% の行だけが結果セットに返されます。 既定では、ビューは最初の 10 行を結果セットに返します。 返される行数を変更するか、異なるパーセントを指定する場合に使用します。

    Expression
    ビューによって返されるパーセント ( [パーセント][はい]に設定されている場合) またはレコード数 ( [パーセント][いいえ]に設定されている場合) を示します。

    [パーセント]
    クエリに TOP 句が含まれるように指定します。この場合、最初の n% の行だけが結果セットに返されます。

    [With Ties]
    ビューに WITH TIES 句が含まれるように指定します。 WITH TIES は、ビューに ORDER BY 句とパーセンテージに基づく TOP 句が含まれる場合に便利です。 このオプションを設定すると、 ORDER BY 句の列で同一の値を持つ行がセットになり、セットの一部の行がパーセンテージによる制限で切り捨てられてしまう場合は、すべての行が含まれるように、ビューで指定されるパーセンテージが増やされます。

    [更新の指定]
    展開すると、 [表示ルールを使用して更新] プロパティと [オプションのチェック] プロパティのプロパティが表示されます。

    (表示ルールを使用して更新)
    Microsoft Data Access Components (MDAC) によって、すべての更新およびビューへの挿入は、ビューのベース テーブルを直接参照する SQL ステートメントではなく、ビューを参照する SQL ステートメントに変換されます。

    MDAC マニフェストは、更新およびビューの挿入操作を、ビューの基になるベース テーブルに対する更新および挿入操作として見なす場合があります。 [表示ルールを使用して更新]を選択することにより、MDAC がビュー自体に対する更新および挿入操作を生成することが保証されます。

    [オプションのチェック]
    このビューを開き、 [結果] ウィンドウを変更すると、データ ソースによって、追加または変更されたデータがビュー定義の WHERE 句を満たすかどうかがチェックされます。 変更内容が WHERE 句を満たさない場合、エラーが詳細情報と共に表示されます。

ビューの依存関係を取得するには

  1. オブジェクト エクスプローラーで、プロパティを表示するビューを含むデータベースを展開します。次に、 [ビュー] フォルダーを展開します。

  2. プロパティを表示するビューを右クリックし、 [依存関係の表示]を選択します。

  3. ビューを参照するオブジェクトを表示するには、 [[ビュー名] に依存するオブジェクト] を選択します。

  4. ビューによって参照されるオブジェクトを表示するには、 [[ビュー名] が依存するオブジェクト] を選択します。

Transact-SQL の使用

ビューの定義およびプロパティを取得するには

  1. オブジェクト エクスプローラーで、 データベース エンジンのインスタンスに接続します。

  2. 標準バーで、 [新しいクエリ] を選択します。

  3. 次のいずれかの例をコピーしてクエリ ウィンドウに貼り付け、[実行]を選択します。

    USE AdventureWorks2022;  
    GO  
    SELECT definition, uses_ansi_nulls, uses_quoted_identifier, is_schema_bound  
    FROM sys.sql_modules  
    WHERE object_id = OBJECT_ID('HumanResources.vEmployee');   
    GO  
    
    USE AdventureWorks2022;   
    GO  
    SELECT OBJECT_DEFINITION (OBJECT_ID('HumanResources.vEmployee')) AS ObjectDefinition;   
    GO  
    
    EXEC sp_helptext 'HumanResources.vEmployee';  
    

詳細については、「sys.sql_modules (Transact-SQL)」、「OBJECT_DEFINITION (Transact-SQL)」、および「sp_helptext (Transact-SQL)」を参照してください。

注意

システム ストアド プロシージャ sp_helptext は、Azure Synapse Analytics ではサポートされていません。 代わりに、sys.sql_modules オブジェクト カタログ ビューを使用します。

ビューの依存関係を取得するには

  1. オブジェクト エクスプローラーで、 データベース エンジンのインスタンスに接続します。

  2. 標準バーで、 [新しいクエリ] を選択します。

  3. 次の例をコピーしてクエリ ウィンドウに貼り付け、 [実行] を選択します。

    USE AdventureWorks2022;  
    GO  
    SELECT OBJECT_NAME(referencing_id) AS referencing_entity_name,   
        o.type_desc AS referencing_desciption,   
        COALESCE(COL_NAME(referencing_id, referencing_minor_id), '(n/a)') AS referencing_minor_id,   
        referencing_class_desc, referenced_class_desc,  
        referenced_server_name, referenced_database_name, referenced_schema_name,  
        referenced_entity_name,   
        COALESCE(COL_NAME(referenced_id, referenced_minor_id), '(n/a)') AS referenced_column_name,  
        is_caller_dependent, is_ambiguous  
    FROM sys.sql_expression_dependencies AS sed  
    INNER JOIN sys.objects AS o ON sed.referencing_id = o.object_id  
    WHERE referencing_id = OBJECT_ID(N'Production.vProductAndDescription');  
    GO  
    

詳細については、「sys.sql_expression_dependencies (Transact-SQL)」および「sys.objects (Transact-SQL)」を参照してください。