Freigeben über


sys.dm_sql_referencing_entities (Transact-SQL)

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 Entität, auf die verwiesen wird) namentlich in einem permanenten SQL-Ausdruck einer anderen Entität, der so genannten verweisenden 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

Themenlink (Symbol)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
    Der Name der Entität, auf die verwiesen wird.

    schema_name ist erforderlich, es sei denn, es handelt sich bei der Klasse, auf die verwiesen wird, um PARTITION_FUNCTION.

    schema_name.referenced_entity_name ist vom Datentyp nvarchar(517).

  • <referenced_class> ::= { OBJECT  | TYPE  | XML_SCHEMA_COLLECTION | PARTITION_FUNCTION }
    Die Klasse der Entität, auf die verwiesen wird. Pro Anweisung kann nur eine Klasse angegeben werden.

    <referenced_class> ist vom Datentyp nvarchar (60).

Zurückgegebene Tabelle

Spaltenname

Datentyp

Beschreibung

referencing_schema_name

sysname

Schema, in das die verweisende Entität gehört. NULL ist zulässig.

NULL für DDL-Trigger auf Datenbankebene und Serverebene.

referencing_entity_name

sysname

Name der verweisenden Entität. NULL ist nicht zulässig.

referencing_id

int

ID der verweisenden Entität. NULL ist nicht zulässig.

referencing_class

tinyint

Klasse der verweisenden Entität. NULL ist nicht zulässig.

1 = Objekt

12 = DDL-Trigger auf Datenbankebene

13 = DDL-Trigger auf Serverebene

referencing_class_desc

nvarchar(60)

Klassenbeschreibung der verweisenden 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, da sie vom Schema des Aufrufers abhängig ist.

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, ist vom Aufrufer abhängig und kann nicht festgelegt 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, für die Abhängigkeitsinformationen erstellt und verwaltet werden, aufgelistet. 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

Sicht

Ja

Ja

Gespeicherte Transact-SQL-Prozedur**

Ja

Ja

gespeicherte CLR-Prozedur

Nein

Ja

Benutzerdefinierte Transact-SQL-Funktion

Ja

Ja

benutzerdefinierte CLR-Funktion

Nein

Ja

CLR-Trigger (DML und DDL)

Nein

Nein

Transact-SQL-DML-Trigger

Ja

Nein

Transact-SQL-DDL-Trigger auf Datenbankebene

Ja

Nein

Transact-SQL-DDL-Trigger auf Serverebene

Ja

Nein

Erweiterte gespeicherte Prozeduren

Nein

Ja

Warteschlange

Nein

Ja

Synonym

Nein

Ja

Typ (Alias und benutzerdefinierter CLR-Typ)

Nein

Ja

XML-Schemaauflistung

Nein

Ja

Partitionsfunktion

Nein

Ja

* Eine Tabelle wird nur dann als verweisende Entität aufgezeichnet, wenn sie auf ein Transact-SQL-Modul, einen benutzerdefinierten Typ oder auf 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.

Weitere Informationen finden Sie unter Grundlegendes zu SQL-Abhängigkeiten.

Berechtigungen

Erfordert die CONTROL-Berechtigung für die Entität, auf die verwiesen wird, und die SELECT-Berechtigung für sys.dm_sql_referencing_entities. Wenn es sich bei der Entität, auf die verwiesen wird, um eine Partitionsfunktion handelt, ist die CONTROL-Berechtigung für die Datenbank erforderlich. In der Standardeinstellung wird die SELECT-Berechtigung der public-Rolle erteilt.

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 AdventureWorks;
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. Im Resultset wird angezeigt, dass dieser Typ von zwei gespeicherten Prozeduren verwendet wird. Der dbo.Flag-Typ wird auch in der Definition mehrerer Spalten der Tabelle HumanResources.Employee verwendet. Da jedoch der Typ nicht in der Definition einer berechneten Spalte, einer CHECK-Einschränkung oder einer DEFAULT-Einschränkung der Tabelle enthalten ist, werden für die Tabelle HumanResources.Employee keine Zeilen zurückgegeben.

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

Dies ist das Resultset.

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 Zeile(n) betroffen)

Änderungsverlauf

Aktualisierter Inhalt

Die Anweisung "Für CLR-Tabellenwertfunktionen werden keine Spaltenabhängigkeiten aufgezeichnet" im Abschnitt zu den Hinweisen wurde entfernt.

Der Datentyp des referenced_entity_name-Parameters wurde korrigiert.