dm_sql_referencing_entities (Transact-sql)sys.dm_sql_referencing_entities (Transact-SQL)

適用対象: yesSQL Server yesAzure SQL Database noAzure Synapse Analytics (SQL DW) noParallel Data Warehouse APPLIES TO: yesSQL Server yesAzure SQL Database noAzure Synapse Analytics (SQL DW) noParallel Data Warehouse

別のユーザー定義エンティティを名前で参照する、現在のデータベース内のエンティティごとに1行のデータを返します。Returns one row for each entity in the current database that references another user-defined entity by name. 2つのエンティティ間の依存関係は、参照先エンティティと呼ばれる1つのエンティティが、別のエンティティの永続化された SQL 式 (参照元エンティティと呼ばれます) で名前によって表示される場合に作成されます。A dependency between two entities is created when one entity, called the referenced entity, appears by name in a persisted SQL expression of another entity, called the referencing entity. たとえば、参照先エンティティとしてユーザー定義型 (UDT) が指定されている場合、この関数は、定義内でその型を名前で参照する各ユーザー定義エンティティを返します。For example, if a user-defined type (UDT) is specified as the referenced entity, this function returns each user-defined entity that reference that type by name in its definition. 関数は、指定されたエンティティを参照する可能性がある他のデータベース内のエンティティを返しません。The function does not return entities in other databases that may reference the specified entity. この関数は、サーバーレベルの DDL トリガーを参照元エンティティとして返すために、master データベースのコンテキストで実行する必要があります。This function must be executed in the context of the master database to return a server-level DDL trigger as a referencing entity.

この動的管理関数に参照先エンティティを指定すると、現在のデータベース内で、そのエンティティを参照する次の種類のエンティティをレポートできます。You can use this dynamic management function to report on the following types of entities in the current database that reference the specified entity:

  • スキーマ バインドまたは非スキーマ バインド エンティティSchema-bound or non-schema-bound entities

  • データベースレベルの DDL トリガーDatabase-level DDL triggers

  • サーバーレベルの DDL トリガーServer-level DDL triggers

適用対象: SQL ServerSQL Server (SQL Server 2008SQL Server 2008 以降)、SQL DatabaseSQL DatabaseApplies to: SQL ServerSQL Server ( SQL Server 2008SQL Server 2008 and later), SQL DatabaseSQL Database.

トピック リンク アイコン Transact-SQL 構文表記規則Topic link icon Transact-SQL Syntax Conventions

構文Syntax

sys.dm_sql_referencing_entities (  
    ' schema_name.referenced_entity_name ' , ' <referenced_class> ' )  
  
<referenced_class> ::=  
{  
    OBJECT  
  | TYPE  
  | XML_SCHEMA_COLLECTION  
  | PARTITION_FUNCTION  
}  

引数Arguments

schema_name.referencedentity_nameschema_name.referencedentity_name
参照先エンティティの名前を指定します。Is the name of the referenced entity.

参照されるクラスが PARTITION_FUNCTION 場合を除き、 schema_nameが必要です。schema_name is required except when the referenced class is PARTITION_FUNCTION.

schema_name。 referenced_entity_namenvarchar (517) です。schema_name.referenced_entity_name is nvarchar(517).

< referenced_class > :: = {OBJECT |TYPE |XML_SCHEMA_COLLECTION |PARTITION_FUNCTION}<referenced_class> ::= { OBJECT | TYPE | XML_SCHEMA_COLLECTION | PARTITION_FUNCTION }
は、参照先エンティティのクラスです。Is the class of the referenced entity. クラスは 1 つのステートメントに 1 つだけ指定できます。Only one class can be specified per statement.

< referenced_class >nvarchar(60) です。<referenced_class> is nvarchar(60).

返されるテーブルTable Returned

列名Column name データ型Data type [説明]Description
referencing_schema_namereferencing_schema_name sysnamesysname 参照元エンティティが属しているスキーマ。Schema in which the referencing entity belongs. NULL 値が許可されます。Is nullable.

データベースレベルおよびサーバーレベルの DDL トリガーの場合は NULL です。NULL for database-level and server-level DDL triggers.
referencing_entity_namereferencing_entity_name sysnamesysname 参照元エンティティの名前。Name of the referencing entity. NULL 値は許可されません。Is not nullable.
referencing_idreferencing_id intint 参照元エンティティの ID。ID of the referencing entity. NULL 値は許可されません。Is not nullable.
referencing_classreferencing_class tinyinttinyint 参照元エンティティのクラス。Class of the referencing entity. NULL 値は許可されません。Is not nullable.

1 = オブジェクト1 = Object

12 = データベース レベル DDL トリガー12 = Database-level DDL trigger

13 = サーバーレベルの DDL トリガー13 = Server-level DDL trigger
referencing_class_descreferencing_class_desc nvarchar(60)nvarchar(60) 参照元エンティティのクラスの説明。Description of class of referencing entity.

OBJECTOBJECT

DATABASE_DDL_TRIGGERDATABASE_DDL_TRIGGER

SERVER_DDL_TRIGGERSERVER_DDL_TRIGGER
is_caller_dependentis_caller_dependent bitbit 参照先エンティティが呼び出し元のスキーマに依存するため、参照先エンティティ ID の解決は実行時に行われることを示します。Indicates the resolution of the referenced entity ID occurs at run time because it depends on the schema of the caller.

1 = 参照元エンティティは、エンティティを参照する可能性があります。ただし、参照先エンティティ ID の解決は呼び出し元に依存しているため、特定できません。1 = The referencing entity has the potential to reference the entity; however, resolution of the referenced entity ID is caller dependent and cannot be determined. これは、ストアドプロシージャ、拡張ストアドプロシージャ、または EXECUTE ステートメントで呼び出されたユーザー定義関数への非スキーマバインド参照に対してのみ発生します。This occurs only for non-schema-bound references to a stored procedure, extended stored procedure, or user-defined function called in an EXECUTE statement.

この値が 0 の場合、参照先エンティティは呼び出し元に依存しません。0 = Referenced entity is not caller dependent.

例外Exceptions

次のいずれかの条件に該当した場合は、空の結果セットが返されます。Returns an empty result set under any of the following conditions:

  • システム オブジェクトが指定されている。A system object is specified.

  • 指定されたエンティティが現在のデータベースに存在しない。The specified entity does not exist in the current database.

  • 指定されたエンティティがいずれのエンティティも参照しない。The specified entity does not reference any entities.

  • 無効なパラメーターが渡される。An invalid parameter is passed.

指定された参照先エンティティが番号付きストアドプロシージャの場合、エラーを返します。Returns an error when the specified referenced entity is a numbered stored procedure.

RemarksRemarks

次の表に、依存関係情報が作成および管理されるエンティティの種類を示します。The following table lists the types of entities for which dependency information is created and maintained. ルール、既定値、一時テーブル、一時ストアド プロシージャ、またはシステム オブジェクトについては、依存関係情報は作成も管理もされません。Dependency information is not created or maintained for rules, defaults, temporary tables, temporary stored procedures, or system objects.

エンティティの種類Entity type 参照元エンティティReferencing entity 参照先エンティティReferenced entity
[ファイル]Table 可*Yes* はいYes
[表示]View はいYes はいYes
Transact-SQLTransact-SQL ストアド プロシージャ**stored procedure** はいYes はいYes
CLR ストアド プロシージャ (CLR stored procedure)CLR stored procedure [いいえ]No はいYes
Transact-SQLTransact-SQL ユーザー定義関数user-defined function はいYes はいYes
CLR ユーザー定義関数CLR user-defined function [いいえ]No はいYes
CLR トリガー (DML および DDL)CLR trigger (DML and DDL) [いいえ]No [いいえ]No
Transact-SQLTransact-SQL DML トリガーDML trigger はいYes [いいえ]No
Transact-SQLTransact-SQL データベース レベルの DDL トリガーdatabase-level DDL trigger はいYes [いいえ]No
Transact-SQLTransact-SQL サーバー レベルの DDL トリガーserver-level DDL trigger はいYes [いいえ]No
拡張ストアド プロシージャExtended stored procedures [いいえ]No はいYes
キューQueue [いいえ]No はいYes
シノニムSynonym [いいえ]No はいYes
型 (別名および CLR ユーザー定義型)Type (alias and CLR user-defined type) [いいえ]No はいYes
XML スキーマ コレクションXML schema collection [いいえ]No はいYes
パーティション関数Partition function [いいえ]No はいYes

* テーブルは、計算列、CHECK 制約、または DEFAULT 制約の定義で Transact-SQLTransact-SQL モジュール、ユーザー定義型、または XML スキーマコレクションを参照する場合にのみ、参照元エンティティとして追跡されます。* A table is tracked as a referencing entity only when it references a Transact-SQLTransact-SQL module, user-defined type, or XML schema collection in the definition of a computed column, CHECK constraint, or DEFAULT constraint.

** 1 より大きな整数値を持つ番号付きストアド プロシージャは、参照元エンティティとしても、参照先エンティティとしても追跡されません。** Numbered stored procedures with an integer value greater than 1 are not tracked as either a referencing or referenced entity.

アクセス許可Permissions

SQL Server 2008SQL Server 2008 - SQL Server 2012 (11.x)SQL Server 2012 (11.x)- SQL Server 2012 (11.x)SQL Server 2012 (11.x)

  • 参照先のオブジェクトに対する CONTROL 権限が必要です。Requires CONTROL permission on the referenced object. 参照先エンティティがパーティション関数である場合、データベースに対する CONTROL 権限が必要です。When the referenced entity is a partition function, CONTROL permission on the database is required.

  • Dm_sql_referencing_entities に対する SELECT 権限が必要です。Requires SELECT permission on sys.dm_sql_referencing_entities. 既定では、SELECT 権限が public に与えられます。By default, SELECT permission is granted to public.

SQL Server 2014 (12.x)SQL Server 2014 (12.x) - SQL Server 2019 (15.x)SQL Server 2019 (15.x)- SQL Server 2019 (15.x)SQL Server 2019 (15.x)

  • 参照先オブジェクトに対する権限は必要ありません。Requires no permissions on the referenced object. ユーザーが参照しているエンティティの一部に対してのみ VIEW DEFINITION を持っている場合、結果の一部を返すことができます。Partial results can be returned if the user has VIEW DEFINITION on only some of the referencing entities.

  • 参照元エンティティがオブジェクトの場合、オブジェクトに対する VIEW DEFINITION が必要です。Requires VIEW DEFINITION on the object when the referencing entity is an object.

  • 参照元エンティティがデータベースレベルの DDL トリガーである場合は、データベースに対する VIEW DEFINITION が必要です。Requires VIEW DEFINITION on the database when the referencing entity is a database-level DDL trigger.

  • 参照元エンティティがサーバーレベルの DDL トリガーである場合は、サーバーの VIEW ANY DEFINITION が必要です。Requires VIEW ANY DEFINITION on the server when the referencing entity is a server-level DDL trigger.

使用例Examples

A.A. 特定のエンティティを参照するエンティティを取得するReturning the entities that refer to a given entity

次の例では、現在のデータベース内で、指定したテーブルを参照するエンティティを取得します。The following example returns the entities in the current database that refer to the specified table.

USE AdventureWorks2012;  
GO  
SELECT referencing_schema_name, referencing_entity_name, referencing_id, referencing_class_desc, is_caller_dependent  
FROM sys.dm_sql_referencing_entities ('Production.Product', 'OBJECT');  
GO  

b.B. 指定された型を参照するエンティティを返すReturning the entities that refer to a given type

次の例では、dbo.Flagエイリアスの種類を参照するエンティティを返します。The following example returns the entities that reference the alias type dbo.Flag. 結果セットは、2つのストアドプロシージャがこの型を使用することを示しています。The result set shows that two stored procedures use this type. dbo.Flag 型は、HumanResources.Employee テーブル内の複数の列の定義でも使用されます。ただし、この型はテーブル内の計算列、CHECK 制約、または DEFAULT 制約の定義に含まれていないため、HumanResources.Employee テーブルに対して行は返されません。The dbo.Flag type is also used in the definition of several columns in the HumanResources.Employee table; however, because the type is not in the definition of a computed column, CHECK constraint, or DEFAULT constraint in the table, no rows are returned for the HumanResources.Employee table.

USE AdventureWorks2012;  
GO  
SELECT referencing_schema_name, referencing_entity_name, referencing_id, referencing_class_desc, is_caller_dependent  
FROM sys.dm_sql_referencing_entities ('dbo.Flag', 'TYPE');  
GO  

結果セットは次のようになります。Here is the result set.

referencing_schema_name referencing_entity_name   referencing_id referencing_class_desc is_caller_dependent  
----------------------- -------------------------  ------------- ---------------------- -------------------  
HumanResources          uspUpdateEmployeeHireInfo  1803153469    OBJECT_OR_COLUMN       0  
HumanResources          uspUpdateEmployeeLogin     1819153526    OBJECT_OR_COLUMN       0  
(2 row(s) affected)`  

参照See Also

sys.dm_sql_referenced_entities (Transact-SQL) sys.dm_sql_referenced_entities (Transact-SQL)
sys.sql_expression_dependencies (Transact-SQL)sys.sql_expression_dependencies (Transact-SQL)