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

GILT FÜR: jaSQL ServerneinAzure SQL-DatenbankjaAzure SQL Data Warehouse jaParallel Data WarehouseAPPLIES TO: yesSQL Server noAzure SQL Database yesAzure SQL Data Warehouse yesParallel Data Warehouse

Enthält eine Zeile für jede Namensabhängigkeit in einer benutzerdefinierten Entität in der aktuellen Datenbank.Contains one row for each by-name dependency on a user-defined entity in the current database. Dies umfasst Abhängigkeiten zwischen nativ kompilierten benutzerdefinierten Skalarfunktionen und anderen SQL ServerSQL Server Modulen.This includes dependences between natively compiled, scalar user-defined functions and other SQL ServerSQL Server modules. Eine Abhängigkeit zwischen zwei Entitäten wird erstellt, wenn eine Entität, die als Referenzierte Entitätbezeichnet wird, in einem permanenten SQL-Ausdruck einer anderen Entität, die als verweisende Entitätbezeichnet wird, nach NamenA 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. Wird beispielsweise in der Definition einer Sicht auf eine Tabelle verwiesen, hängt die Sicht als verweisende Entität von der Tabelle ab, der Entität, auf die verwiesen wird.For example, when a table is referenced in the definition of a view, the view, as the referencing entity, depends on the table, the referenced entity. Wenn die Tabelle gelöscht wird, ist die Sicht unbrauchbar.If the table is dropped, the view is unusable.

Weitere Informationen dazu finden Sie unter Benutzerdefinierte Skalarfunktionen für In-Memory-OLTP.For more information, see Scalar User-Defined Functions for In-Memory OLTP.

Sie können diese Katalogsicht verwenden, um einen Bericht mit den Abhängigkeitsinformationen für die folgenden Entitäten zu erstellen:You can use this catalog view to report dependency information for the following entities:

  • Schemagebundene Entitäten.Schema-bound entities.

  • Nicht schemagebundene Entitäten.Non-schema-bound entities.

  • Datenbankübergreifende und serverübergreifende Entitäten.Cross-database and cross-server entities. Entitätsnamen werden gemeldet; Entitäts-IDs werden jedoch nicht aufgelöst.Entity names are reported; however, entity IDs are not resolved.

  • Abhängigkeiten auf Spaltenebene für schemagebundene Entitäten.Column-level dependencies on schema-bound entities. Abhängigkeiten auf Spaltenebene für nicht Schema gebundene Objekte können mit sys. DM _sql_referenced_entitieszurückgegeben werden.Column-level dependencies for non-schema-bound objects can be returned by using sys.dm_sql_referenced_entities.

  • DDL-Trigger auf Serverebene im Kontext der Masterdatenbank.Server-level DDL triggers when in the context of the master database.

SpaltennameColumn name DatentypData type BeschreibungDescription
referencing_idreferencing_id intint ID der verweisenden Entität.ID of the referencing entity. Lässt keine NULL-Werte zu.Is not nullable.
referencing_minor_idreferencing_minor_id intint Die Spalten-ID, wenn es sich bei der verweisenden Entität um eine Spalte handelt. Andernfalls ist der Wert 0.Column ID when the referencing entity is a column; otherwise 0. Lässt keine NULL-Werte zu.Is not nullable.
referencing_classreferencing_class tinyinttinyint Klasse der verweisenden Entität.Class of the referencing entity.

1 = Objekt oder Spalte1 = Object or column

12 = DDL-Trigger auf Datenbankebene12 = Database DDL trigger

13 = DDL-Trigger auf Serverebene13 = Server DDL trigger

Lässt keine NULL-Werte zu.Is not nullable.
referencing_class_descreferencing_class_desc nvarchar(60)nvarchar(60) Klassenbeschreibung der verweisenden Entität.Description of the class of referencing entity.

OBJECT_OR_COLUMNOBJECT_OR_COLUMN

DATABASE_DDL_TRIGGERDATABASE_DDL_TRIGGER

SERVER_DDL_TRIGGERSERVER_DDL_TRIGGER

Lässt keine NULL-Werte zu.Is not nullable.
is_schema_bound_referenceis_schema_bound_reference bitbit 1 = Entität, auf die verwiesen wird, ist schemagebunden.1 = Referenced entity is schema-bound.

0 = Entität, auf die verwiesen wird, ist nicht schemagebunden.0 = Referenced entity is non-schema-bound.

Lässt keine NULL-Werte zu.Is not nullable.
referenced_classreferenced_class tinyinttinyint Klasse der Entität, auf die verwiesen wird.Class of the referenced entity.

1 = Objekt oder Spalte1 = Object or column

6 = Typ6 = Type

10 = XML-Schemaauflistung10 = XML schema collection

21 = Partitionsfunktion21 = Partition function

Lässt keine NULL-Werte zu.Is not nullable.
referenced_class_descreferenced_class_desc nvarchar(60)nvarchar(60) Klassenbeschreibung der Entität, auf die verwiesen wird.Description of class of referenced entity.

OBJECT_OR_COLUMNOBJECT_OR_COLUMN

TYPETYPE

XML_SCHEMA_COLLECTIONXML_SCHEMA_COLLECTION

PARTITION_FUNCTIONPARTITION_FUNCTION

Lässt keine NULL-Werte zu.Is not nullable.
referenced_server_namereferenced_server_name sysnamesysname Servername der Entität, auf die verwiesen wird.Name of the server of the referenced entity.

Diese Spalte wird für serverübergreifende Abhängigkeiten aufgefüllt, die auf der Angabe eines gültigen vierteiligen Namens basieren.This column is populated for cross-server dependencies that are made by specifying a valid four-part name. Weitere Informationen zu mehrteiligen Namen finden Sie unter Transact- SQL- (Syntax Konventionen Transact)-SQL.For information about multipart names, see Transact-SQL Syntax Conventions (Transact-SQL).

NULL für nicht schemagebundene Entitäten, für die ohne Angabe eines vierteiligen Namens auf die Entität verwiesen wurde.NULL for non-schema-bound entities for which the entity was referenced without specifying a four-part name.

NULL für Schema gebundene Entitäten, da Sie sich in derselben Datenbank befinden müssen und deshalb nur mit einem zweiteiligen Namen (Schema. Object) definiert werden können.NULL for schema-bound entities because they must be in the same database and therefore can only be defined using a two-part (schema.object) name.
referenced_database_namereferenced_database_name sysnamesysname Datenbankname der Entität, auf die verwiesen wird.Name of the database of the referenced entity.

Diese Spalte wird für datenbankübergreifende oder serverübergreifende Verweise aufgefüllt, die auf der Angabe eines gültigen dreiteiligen oder vierteiligen Namens basieren.This column is populated for cross-database or cross-server references that are made by specifying a valid three-part or four-part name.

NULL für nicht schemagebundene Verweise, wenn auf Basis eines einteiligen oder zweiteiligen Namens angegeben.NULL for non-schema-bound references when specified using a one-part or two-part name.

NULL für Schema gebundene Entitäten, da Sie sich in derselben Datenbank befinden müssen und deshalb nur mit einem zweiteiligen Namen (Schema. Object) definiert werden können.NULL for schema-bound entities because they must be in the same database and therefore can only be defined using a two-part (schema.object) name.
referenced_schema_namereferenced_schema_name sysnamesysname Schema, in das die Entität gehört, auf die verwiesen wird.Schema in which the referenced entity belongs.

NULL für nicht schemagebundene Verweise, in denen ohne Angabe des Schemanamens auf die Entität verwiesen wird.NULL for non-schema-bound references in which the entity was referenced without specifying the schema name.

Niemals NULL für schemagebundene Verweise, da schemagebundene Entitäten mit einem zweiteiligen Namen definiert werden müssen und mit diesem zweiteiligen Namen auf sie verwiesen werden muss.Never NULL for schema-bound references because schema-bound entities must be defined and referenced by using a two-part name.
referenced_entity_namereferenced_entity_name sysnamesysname Name der Entität, auf die verwiesen wird.Name of the referenced entity. Lässt keine NULL-Werte zu.Is not nullable.
referenced_idreferenced_id intint ID der Entität, auf die verwiesen wird.ID of the referenced entity. Der Wert dieser Spalte ist für Schema gebundene Verweise nie NULL.The value of this column is never NULL for schema-bound references. Der Wert dieser Spalte ist immer NULL für Server übergreifende und datenbankübergreifende Verweise.The value of this column is always NULL for cross-server and cross-database references.

NULL für Verweise innerhalb der Datenbank, wenn die ID nicht bestimmt werden kann.NULL for references within the database if the ID cannot be determined. Für nicht schemagebundene Verweise kann die ID in den folgenden Fällen nicht aufgelöst werden:For non-schema-bound references, the ID cannot be resolved in the following cases:

Die Entität, auf die verwiesen wird, ist in der Datenbank nicht vorhanden.The referenced entity does not exist in the database.

Das Schema der Entität, auf die verwiesen wird, hängt vom Schema des Aufrufers ab und wird zur Laufzeit aufgelöst.The schema of the referenced entity depends on the schema of the caller and is resolved at run time. In diesem Fall wird is_caller_dependent auf 1 festgelegt.In this case, is_caller_dependent is set to 1.
referenced_minor_idreferenced_minor_id intint ID der Spalte, auf die verwiesen wird, wenn es sich bei der verweisenden Entität um eine Spalte handelt. Andernfalls ist der Wert 0.ID of the referenced column when the referencing entity is a column; otherwise 0. Lässt keine NULL-Werte zu.Is not nullable.

Eine Entität, auf die verwiesen wird, ist eine Spalte, wenn diese in der verweisenden Entität namentlich identifiziert wird oder wenn die übergeordnete Entität in einer SELECT *-Anweisung verwendet wird.A referenced entity is a column when a column is identified by name in the referencing entity, or when the parent entity is used in a SELECT * statement.
is_caller_dependentis_caller_dependent bitbit Gibt an, dass die Schemabindung für die Entität, auf die verwiesen wird, zur Laufzeit erfolgt. Deshalb hängt die Auflösung der Entitäts-ID vom Schema des Aufrufers ab.Indicates that schema binding for the referenced entity occurs at runtime; therefore, resolution of the entity ID depends on the schema of the caller. Dies ist der Fall, wenn es sich bei der Entität, auf die verwiesen wird, um eine gespeicherte Prozedur, eine erweiterte gespeicherte Prozedur oder um eine nicht schemagebundene benutzerdefinierte Funktion handelt, die in einer EXECUTE-Anweisung aufgerufen wird.This occurs when the referenced entity is a stored procedure, extended stored procedure, or a non-schema-bound user-defined function called in an EXECUTE statement.

1 = Die Entität, auf die verwiesen wird, hängt vom Aufrufer ab und wird zur Laufzeit aufgelöst.1 = The referenced entity is caller dependent and is resolved at runtime. In diesem Fall ist referenced_id gleich NULL.In this case, referenced_id is NULL.

0 = Die Entitäts-ID, auf die verwiesen wird, ist nicht aufruferabhängig.0 = The referenced entity ID is not caller dependent.

Immer 0 für schemagebundene Verweise sowie für datenbankübergreifende und serverübergreifende Verweise, die explizit einen Schemanamen angeben.Always 0 for schema-bound references and for cross-database and cross-server references that explicitly specify a schema name. Zum Beispiel ist ein Verweis auf eine Entität im Format EXEC MyDatabase.MySchema.MyProc nicht aufruferabhängig.For example, a reference to an entity in the format EXEC MyDatabase.MySchema.MyProc is not caller dependent. Ein Verweis im Format EXEC MyDatabase..MyProc ist jedoch aufruferabhängig.However, a reference in the format EXEC MyDatabase..MyProc is caller dependent.
is_ambiguousis_ambiguous bitbit Gibt an, dass der Verweis mehrdeutig ist und zur Laufzeit in eine benutzerdefinierte Funktion, in einen benutzerdefinierten Typ (User-Defined Type, UDT) oder in einen XQuery-Verweis auf eine Spalte vom Typ XMLaufgelöst werden kann.Indicates the reference is ambiguous and can resolve at run time to a user-defined function, a user-defined type (UDT), or an xquery reference to a column of type xml.

Angenommen, die SELECT Sales.GetOrder() FROM Sales.MySales-Anweisung ist in einer gespeicherten Prozedur definiert.For example, assume that the statement SELECT Sales.GetOrder() FROM Sales.MySales is defined in a stored procedure. Bis zur Ausführung der gespeicherten Prozedur ist unbekannt, ob Sales.GetOrder() eine benutzerdefinierte Funktion im Schema Sales oder in der Spalte namens Sales vom Typ UDT mit einer Methode namens GetOrder() ist.Until the stored procedure is executed, it is not known whether Sales.GetOrder() is a user-defined function in the Sales schema or column named Sales of type UDT with a method named GetOrder().

1 = Verweis ist mehrdeutig.1 = Reference is ambiguous.

0 = Verweis ist eindeutig, oder die Entität kann beim Aufruf der Sicht erfolgreich gebunden werden.0 = Reference is unambiguous or the entity can be successfully bound when the view is called.

Immer 0 für Schema gebundene Verweise.Always 0 for schema bound references.

HinweiseRemarks

In der folgenden Tabelle werden die Typen von Entitäten aufgelistet, für die Abhängigkeitsinformationen erstellt und verwaltet werden.The following table lists the types of entities for which dependency information is created and maintained. Für Regeln, Standardwerte, temporäre Tabellen, temporär gespeicherte Prozeduren oder Systemobjekte werden keine Abhängigkeitsinformationen erstellt oder verwaltet.Dependency information is not created or maintained for rules, defaults, temporary tables, temporary stored procedures, or system objects.

Hinweis

Azure SQL Data Warehouse und parallele Data Warehouse unterstützen Tabellen, Sichten, gefilterte Statistiken und Entitäts Typen von gespeicherten Prozeduren von Transact-SQL aus dieser Liste.Azure SQL Data Warehouse and Parallel Data Warehouse support tables, views, filtered statistics, and Transact-SQL stored procedures entity types from this list. Abhängigkeitsinformationen werden nur für Tabellen, Sichten und gefilterte Statistiken erstellt und verwaltet.Dependency information is created and maintained for tables, views, and filtered statistics only.

EntitätstypEntity type Verweisende EntitätReferencing entity Entität, auf die verwiesen wirdReferenced entity
TabelleTable Ja*Yes* JaYes
AnsichtView JaYes JaYes
Gefilterter IndexFiltered index Ja**Yes** NeinNo
Gefilterte StatistikFiltered statistics Ja**Yes** NeinNo
Gespeicherte Transact-SQLTransact-SQL-Prozedur***Transact-SQLTransact-SQL stored procedure*** JaYes JaYes
Gespeicherte CLR-ProzedurCLR stored procedure NeinNo JaYes
Benutzerdefinierte Funktion in Transact-SQLTransact-SQLTransact-SQLTransact-SQL user-defined function JaYes JaYes
CLR-benutzerdefinierte FunktionCLR user-defined function NeinNo JaYes
CLR-Trigger (DML und DDL)CLR trigger (DML and DDL) NeinNo NeinNo
DML-Trigger in Transact-SQLTransact-SQLTransact-SQLTransact-SQL DML trigger JaYes NeinNo
DDL-Trigger auf Datenbankebene in Transact-SQLTransact-SQLTransact-SQLTransact-SQL database-level DDL trigger JaYes NeinNo
DDL-Trigger auf Serverebene in Transact-SQLTransact-SQLTransact-SQLTransact-SQL server-level DDL trigger JaYes NeinNo
Erweiterte gespeicherte ProzedurenExtended stored procedures NeinNo JaYes
WarteschlangeQueue NeinNo JaYes
SynonymSynonym NeinNo JaYes
Typ (Alias und CLR-benutzerdefinierter Typ)Type (alias and CLR user-defined type) NeinNo JaYes
XML-SchemaauflistungXML schema collection NeinNo JaYes
PartitionsfunktionPartition function NeinNo JaYes

*Eine Tabelle wird nur als verweisende Entität nachverfolgt, wenn Sie Transact-SQLTransact-SQL auf ein Modul, einen benutzerdefinierten Typ oder eine XML-Schema Auflistung in der Definition einer berechneten Spalte, einer Check-Einschränkung oder einer DEFAULT-Einschränkung verweist.* 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.

** Jede im Filterprädikat verwendete Spalte wird als verweisende Entität aufgezeichnet.** Each column used in the filter predicate is tracked as a referencing entity.

*** Nummerierte gespeicherte Prozeduren mit einem ganzzahligen Wert größer 1 werden weder als verweisende Entität noch als Entität, auf die verwiesen wird, aufgezeichnet.*** Numbered stored procedures with an integer value greater than 1 are not tracked as either a referencing or referenced entity.

BerechtigungenPermissions

Erfordert die VIEW DEFINITION-Berechtigung für die Datenbank und die SELECT-Berechtigung für sys.sql_expression_dependencies für die Datenbank.Requires VIEW DEFINITION permission on the database and SELECT permission on sys.sql_expression_dependencies for the database. Standardmäßig wird die SELECT-Berechtigung nur Mitgliedern der festen Datenbankrolle db_owner gewährt.By default, SELECT permission is granted only to members of the db_owner fixed database role. Wenn einem anderen Benutzer die SELECT-Berechtigung und die VIEW DEFINITION-Berechtigung erteilt werden, kann dieser Berechtigte alle Abhängigkeiten in der Datenbank anzeigen.When SELECT and VIEW DEFINITION permissions are granted to another user, the grantee can view all dependencies in the database.

BeispieleExamples

A.A. Zurückgeben von Entitäten, auf die von einer anderen Entität verwiesen wirdReturning entities that are referenced by another entity

Im folgenden Beispiel werden die Tabellen und Spalten zurückgegeben, auf die in der Sicht Production.vProductAndDescription verwiesen wird.The following example returns the tables and columns referenced in the view Production.vProductAndDescription. Die Sicht hängt von den Entitäten (Tabellen und Spalten) ab, die in den Spalten referenced_entity_name und referenced_column_name zurückgegeben werden.The view depends on the entities (tables and columns) returned in the referenced_entity_name and referenced_column_name columns.

USE AdventureWorks2012;  
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_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  
  

B.B. Zurückgeben von Entitäten, die auf eine andere Entität verweisenReturning entities that reference another entity

Im folgenden Beispiel werden die Entitäten zurückgegeben, die auf die Tabelle Production.Product verweisen.The following example returns the entities that reference the table Production.Product. Die in der referencing_entity_name-Spalte zurückgegebenen Entitäten hängen von der Product-Tabelle ab.The entities returned in the referencing_entity_name column depend on the Product table.

USE AdventureWorks2012;  
GO  
SELECT OBJECT_SCHEMA_NAME ( referencing_id ) AS referencing_schema_name,  
    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 referenced_id = OBJECT_ID(N'Production.Product');  
GO  
  

C.C. Zurückgeben von datenbankübergreifenden AbhängigkeitenReturning cross-database dependencies

Im folgenden Beispiel werden alle datenbankübergreifenden Abhängigkeiten zurückgegeben.The following example returns all cross-database dependencies. Im Beispiel werden zuerst die Datenbank db1 sowie zwei gespeicherte Prozeduren erstellt, die auf Tabellen in den Datenbanken db2 und db3 verweisen.The example first creates the database db1 and two stored procedures that reference tables in the databases db2 and db3. Die sys.sql_expression_dependencies-Tabelle wird dann abgefragt, um die datenbankübergreifenden Abhängigkeiten zwischen den Prozeduren und den Tabellen zu berichten.The sys.sql_expression_dependencies table is then queried to report the cross-database dependencies between the procedures and the tables. Beachten Sie, dass für die Entität referenced_schema_name, auf die verwiesen wird, in der Spalte t3 NULL zurückgegeben wird, weil in der Definition der Prozedur kein Schemaname für diese Entität angegeben wurde.Notice that NULL is returned in the referenced_schema_name column for the referenced entity t3 because a schema name was not specified for that entity in the definition of the procedure.

CREATE DATABASE db1;  
GO  
USE db1;  
GO  
CREATE PROCEDURE p1 AS SELECT * FROM db2.s1.t1;  
GO  
CREATE PROCEDURE p2 AS  
    UPDATE db3..t3  
    SET c1 = c1 + 1;  
GO  
SELECT OBJECT_NAME (referencing_id),referenced_database_name,   
    referenced_schema_name, referenced_entity_name  
FROM sys.sql_expression_dependencies  
WHERE referenced_database_name IS NOT NULL;  
GO  
USE master;  
GO  
DROP DATABASE db1;  
GO  
  

Siehe auchSee Also

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