Freigeben über


sys.dm_sql_referencing_entities (Transact-SQL)

Gilt für: SQL Server Azure SQL-Datenbank Azure SQL Managed Instance

Gibt eine Zeile für jede Entität in der aktuellen Datenbank zurück, die anhand des Namens auf eine andere benutzerdefinierte Entität verweist. Wenn eine Entität (die referenzierte Entität) namentlich in einem persistenten SQL-Ausdruck einer anderen Entität (der so genannten verweisenden oder referenzierenden Entität) aufgeführt ist, wird eine Abhängigkeit zwischen den beiden Entitäten erstellt. Wird z. B. ein benutzerdefinierter Typ (User-Defined Type; UDT) als Entität angegeben, auf die verwiesen wird, gibt diese Funktion jede benutzerdefinierte Entität zurück, die anhand des Namens in der zugehörigen Definition auf diesen Typ verweist. Die Funktion gibt keine Entitäten in anderen Datenbanken zurück, die möglicherweise auf die angegebene Entität verweisen. Diese Funktion muss zusammen mit der master-Datenbank ausgeführt werden, um einen DDL-Trigger auf Serverebene als verweisende Entität zurückzugeben.

Verwenden Sie diese dynamische Verwaltungsfunktion, um zu folgenden Entitätstypen in der aktuellen Datenbank, die auf die angegebene Entität verweisen, einen Bericht zu erstellen:

  • Schemagebundene oder nicht schemagebundene Entitäten

  • DDL-Trigger auf Datenbankebene

  • DDL-Trigger auf Serverebene

Gilt für: SQL Server ( SQL Server 2008 (10.0.x) und höher), SQL-Datenbank.

Transact-SQL-Syntaxkonventionen

Syntax

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

Argumente

schema_name.referenced_entity_name Ist der Name der Entität, auf die verwiesen wird.

schema_name ist erforderlich, außer wenn die referenzierte Klasse PARTITION_FUNCTION ist.

schema_name.referenced_entity_name ist nvarchar(517).

<referenced_class> ::= { OBJECT | TYPE | XML_SCHEMA_COLLECTION | PARTITION_FUNCTION } Ist die Klasse der referenzierten Entität. Pro Anweisung kann nur eine Klasse angegeben werden.

<referenced_class> is nvarchar(60).

Zurückgegebene Tabelle

Spaltenname Datentyp Beschreibung
referencing_schema_name sysname Schema, in das die verweisende Entität gehört. Lässt NULL-Werte zu.

NULL für DDL-Trigger auf Datenbankebene und Serverebene.
referencing_entity_name sysname Name der verweisenden Entität. Lässt keine NULL-Werte zu.
referencing_id int ID der verweisenden Entität. Lässt keine NULL-Werte zu.
referencing_class tinyint Klasse der verweisenden Entität. Lässt keine NULL-Werte zu.

1 = Objekt

12 = DDL-Trigger auf Datenbankebene

13 = DDL-Trigger auf Serverebene
referencing_class_desc nvarchar(60) Beschreibung der Klasse der referenzierenden Entität.

OBJECT

DATABASE_DDL_TRIGGER

SERVER_DDL_TRIGGER
is_caller_dependent bit Gibt an, dass die Auflösung der Entität, auf die verwiesen wird, zur Laufzeit erfolgt, weil sie vom Schema des Aufrufers abhängt.

1 = Die verweisende Entität kann zwar auf die Entität verweisen, doch die Auflösung der ID der Entität, auf die verwiesen wird, hängt vom Aufrufer ab und kann nicht bestimmt werden. Dies gilt nur für nicht schemagebundene Verweise auf eine gespeicherte Prozedur, eine erweiterte gespeicherte Prozedur oder eine benutzerdefinierte Funktion, die in einer EXECUTE-Anweisung aufgerufen wird.

0 = Die Entität, auf die verwiesen wird, ist kein aufruferabhängiges Element.

Ausnahmen

Gibt unter den folgenden Bedingungen ein leeres Resultset zurück:

  • Ein Systemobjekt wird angegeben.

  • Die angegebene Entität ist in der Datenbank nicht vorhanden.

  • Die angegebene Entität verweist auf keine Entitäten.

  • Ein ungültiger Parameter wird übergeben.

Gibt einen Fehler zurück, wenn die angegebene Entität, auf die verwiesen wird, eine nummerierte gespeicherte Prozedur ist.

Hinweise

In der folgenden Tabelle werden die Typen von Entitäten aufgelistet, für die Abhängigkeitsinformationen erstellt und verwaltet werden. Für Regeln, Standardwerte, temporäre Tabellen, temporär gespeicherte Prozeduren oder Systemobjekte werden keine Abhängigkeitsinformationen erstellt oder verwaltet.

Entitätstyp Verweisende Entität Entität, auf die verwiesen wird
Tabelle Ja* Ja
Anzeigen Ja Ja
Transact-SQL-gespeicherte Prozedur** Ja Ja
Gespeicherte CLR-Prozedur Nein Ja
Benutzerdefinierte Transact-SQL-Funktion Ja Ja
CLR-benutzerdefinierte Funktion Nein Ja
CLR-Trigger (DML und DDL) Nein Nein
DML-Trigger in Transact-SQL Ja Nein
DDL-Trigger auf Datenbankebene in Transact-SQL Ja Nein
DDL-Trigger auf Serverebene in Transact-SQL Ja Nein
Erweiterte gespeicherte Prozeduren Nein Ja
Warteschlange Nein Ja
Synonym Nein Ja
Typ (Alias und CLR-benutzerdefinierter Typ) Nein Ja
XML-Schemaauflistung Nein Ja
Partitionsfunktion Nein Ja

* Eine Tabelle wird nur dann als verweisende Entität nachverfolgt, wenn sie auf ein Transact-SQL-Modul, einen benutzerdefinierten Typ oder eine XML-Schemaauflistung in der Definition einer berechneten Spalte, einer CHECK-Einschränkung oder einer DEFAULT-Einschränkung verweist.

** Nummerierte gespeicherte Prozeduren mit einem ganzzahligen Wert größer als 1 werden weder als verweisende Entität noch als Entität, auf die verwiesen wird, aufgezeichnet.

Berechtigungen

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

  • Erfordert die CONTROL-Berechtigung für das Objekt, auf das verwiesen wird. Wenn es sich bei der Entität, auf die verwiesen wird, um eine Partitionsfunktion handelt, ist die CONTROL-Berechtigung für die Datenbank erforderlich.

  • Erfordert SELECT-Berechtigung für sys.dm_sql_referencing_entities. Standardmäßig wird die SELECT-Berechtigung der public-Rolle erteilt.

SQL Server 2014 (12.x) und höher

  • Erfordert keine Berechtigungen für das Objekt, auf das verwiesen wird. Teilergebnisse können zurückgegeben werden, wenn der Benutzer über die VIEW DEFINITION-Berechtigung auf nur einigen der verweisenden Entitäten verfügt.

  • Erfordert die VIEW DEFINITION-Berechtigung für das Objekt, wenn es sich bei der verweisenden Entität um ein Objekt handelt.

  • Erfordert die VIEW DEFINITION-Berechtigung für die Datenbank, wenn es sich bei der verweisenden Entität um einen DDL-Trigger auf Datenbankebene handelt.

  • Erfordert die VIEW ANY DEFINITION-Berechtigung für den Server, wenn es sich bei der verweisenden Entität um einen DDL-Trigger auf Serverebene handelt.

Beispiele

A. Zurückgeben der Entitäten, die auf eine bestimmte Entität verweisen

Im folgenden Beispiel werden die Entitäten in der aktuellen Datenbank zurückgegeben, die auf die angegebene Tabelle verweisen.

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. Zurückgeben der Entitäten, die auf einen bestimmten Typ verweisen

Im folgenden Beispiel werden die Entitäten zurückgegeben, die auf den Aliastyp dbo.Flag verweisen. Das Resultset zeigt an, dass zwei gespeicherte Prozeduren diesen Typ verwenden. Der dbo.Flag Typ wird auch in der Definition mehrerer Spalten in der HumanResources.Employee Tabelle verwendet. Da sich der Typ jedoch nicht in der Definition einer berechneten Spalte, CHECK-Einschränkung oder DEFAULT-Einschränkung in der Tabelle befindet, werden keine Zeilen für die HumanResources.Employee Tabelle zurückgegeben.

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  

Hier sehen Sie das Ergebnis.

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

Weitere Informationen

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