sys.dm_sql_referencing_entities (Transact-SQL)

Gäller för:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceSQL-databas i Microsoft Fabric

Returnerar en rad för varje entitet i den aktuella databasen som refererar till en annan användardefinierad enhet med namn. Ett beroende mellan två entiteter skapas när en entitet, kallad den refererade entiteten, visas vid namn i ett bestående SQL-uttryck från en annan entitet, kallad referensentiteten. Till exempel, om en användardefinierad typ (UDT) anges som den refererade entiteten, returnerar denna funktion varje användardefinierad entitet som refererar till den typen med namn i sin definition. Funktionen returnerar inte entiteter i andra databaser som kan referera till den angivna enheten. Denna funktion måste utföras i huvuddatabasens kontext för att returnera en servernivå-DDL-trigger som referensentitet.

Du kan använda denna dynamiska hanteringsfunktion för att rapportera om följande typer av enheter i den aktuella databasen som refererar till den angivna enheten:

  • Schemabundna eller icke-schemabundna enheter

  • DDL-triggers på databasnivå

  • Servernivå-DDL-triggers

Gäller för: SQL Server (SQL Server 2008 (10.0.x och senare), SQL Database.

Transact-SQL syntaxkonventioner

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.referenced_entity_name Är namnet på den refererade enheten.

schema_name krävs utom när den refererade kursen är PARTITION_FUNCTION.

schema_name.referenced_entity_nameär nvarchar(517).

<referenced_class> ::= { OBJECT | TYPE | XML_SCHEMA_COLLECTION | PARTITION_FUNCTION } Är klassen för den refererade entiteten. Endast en klass kan specificeras per sats.

<referenced_class> är nvarchar(60).

Tabell returnerad

Kolumnnamn Datatyp Description
referencing_schema_name sysname Schema där den refererande enheten hör hemma. Kan inte vara null.

NULL för databasnivå- och servernivå-DDL-triggers.
referencing_entity_name sysname Namnet på den refererande enheten. Får inte vara ogiltig.
referencing_id int ID för den refererande enheten. Får inte vara ogiltig.
referencing_class tinyint Klass av den refererande enheten. Får inte vara ogiltig.

1 = Objekt

12 = Databasnivå-DDL-trigger

13 = Servernivå-DDL-trigger
referencing_class_desc nvarchar(60) Beskrivning av klass av referensentitet.

OBJECT

DATABASE_DDL_TRIGGER

SERVER_DDL_TRIGGER
is_caller_dependent bit Indikerar att upplösningen av det refererade entitets-ID:t sker vid körning eftersom det beror på anroparens schema.

1 = Den refererande entiteten har potential att referera till entiteten; dock är upplösningen av det refererade entitets-ID:t beroende av anroparen och kan inte bestämmas. Detta sker endast för icke-schemabundna referenser till en lagrad procedur, utökad lagrad prozedur eller användardefinierad funktion som anropas i ett EXECUT-uttalande.

0 = Den refererade enheten är inte beroende av anroparen.

Exceptions

Returnerar en tom resultatmängd under något av följande villkor:

  • Ett systemobjekt specificeras.

  • Den angivna enheten finns inte i den aktuella databasen.

  • Den angivna enheten refererar inte till några enheter.

  • En ogiltig parameter passeras.

Returnerar ett fel när den specificerade referensenheten är en numrerad lagrad procedur.

Anmärkningar

Följande tabell listar de typer av enheter för vilka beroendeinformation skapas och underhålls. Beroendeinformation skapas eller underhålls inte för regler, standardvärden, temporära tabeller, tillfälligt lagrade procedurer eller systemobjekt.

Entitetstyp Referensentitet Refererad enhet
Tabell Ja* Yes
View Yes Yes
Transact-SQL lagrad procedur** Yes Yes
CLR-lagrad procedur Nej Yes
Transact-SQL användardefinierad funktion Yes Yes
CLR:s användardefinierade funktion Nej Yes
CLR-trigger (DML och DDL) Nej Nej
Transact-SQL DML-utlösare Yes Nej
Transact-SQL databasnivå-DDL-trigger Yes Nej
Transact-SQL servernivå-DDL-trigger Yes Nej
Utökade lagrade procedurer Nej Yes
Queue Nej Yes
Synonym Nej Yes
Type (alias och CLR användardefinierad typ) Nej Yes
XML-schemasamling Nej Yes
Partitionsfunktion Nej Yes

* En tabell spåras som en referensentitet endast när den refererar till en Transact-SQL modul, användardefinierad typ eller XML-schemasamling i definitionen av en beräknad kolumn, CHECK-begränsning eller DEFAULT-begränsning.

** Numrerade lagrade procedurer med ett heltalsvärde större än 1 spåras inte som vare sig referens- eller referensentitet.

Permissions

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

  • Kräver CONTROL-behörighet på det refererade objektet. När den refererade entiteten är en partitionsfunktion krävs KONTROLL-behörighet för databasen.

  • Kräver SELECT-behörighet på sys.dm_sql_referencing_entities. Som standardinställning beviljas SELECT-behörighet till allmänheten.

SQL Server 2014 (12.x) och senare

  • Kräver inga behörigheter på det refererade objektet. Delvisa resultat kan returneras om användaren har VIEW DEFINITION på endast några av referensentiteterna.

  • Kräver VIEW DEFINITION på objektet när den refererande entiteten är ett objekt.

  • Kräver VIEW DEFINITION på databasen när den refererande enheten är en databasnivå-DDL-trigger.

  • Kräver VIEW ANY DEFINITION på servern när den refererande enheten är en servernivå DDL-trigger.

Examples

A. Returnera entiteterna som hänvisar till en given entitet

Följande exempel returnerar de entiteter i den aktuella databasen som refererar till den angivna tabellen.

USE AdventureWorks2022;  
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. Returnerar entiteterna som refererar till en given typ

Följande exempel returnerar entiteterna som refererar till aliastypen dbo.Flag. Resultatmängden visar att två lagrade procedurer använder denna typ. Typen dbo.Flag används också vid definitionen av flera kolumner i tabellen HumanResources.Employee ; men eftersom typen inte finns i definitionen av en beräknad kolumn, CHECK-begränsning eller DEFAULT-begränsning i tabellen, returneras inga rader för tabellen HumanResources.Employee .

USE AdventureWorks2022;  
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  

Här är resultatet.

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)`  

Se även

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