Freigeben über


sys.sql_dependencies (Transact-SQL)

Aktualisiert: 12. Dezember 2006

Enthält eine Zeile für jede Abhängigkeit von einer (unabhängigen) Entität, auf die in dem SQL-Ausdruck oder den Anweisungen verwiesen wird, die ein anderes verweisendes (abhängiges) Objekt definieren. Die sys.sql_dependencies-Sicht dient zum Nachverfolgen von namentlichen Abhängigkeiten zwischen Entitäten. Für jede Zeile in sys.sql_dependencies wird die Entität, auf die verwiesen wird, namentlich in einem permanenten SQL-Ausdruck des verweisenden Objekts ausgeführt. Falls das verweisende Objekt einen schemagebundenen Ausdruck aufweist, wird darüber hinaus die Abhängigkeit erzwungen. Weitere Informationen finden Sie unter Grundlegendes zu SQL-Abhängigkeiten.

Spaltenname Datentyp Beschreibung

class

tinyint

Identifiziert die Klasse der (unabhängigen) Entität, auf die verwiesen wird:

0 = Objekt oder Spalte (nur nicht schemagebundene Verweise)

1 = Objekt oder Spalte (schemagebundene Verweise)

2 = Typen (schemagebundene Verweise)

3 = XML-Schemaauflistungen (schemagebundene Verweise)

4 = Partitionsfunktion (schemagebundene Verweise)

class_desc

nvarchar(60)

Beschreibung der Klasse der (unabhängigen) Entität, auf die verwiesen wird:

  • OBJECT_OR_COLUMN_REFERENCE_NON_SCHEMA_BOUND
  • OBJECT_OR_COLUMN_REFERENCE_SCHEMA_BOUND
  • TYPE_REFERENCE
  • XML_SCHEMA_COLLECTION_REFERENCE
  • PARTITION_FUNCTION_REFERENCE

object_id

int

ID des verweisenden (abhängigen) Objekts.

column_id

int

Falls die abhängige ID eine Spalte angibt, ist dies die ID der verweisenden (abhängigen) Spalte. Andernfalls ist der Wert 0.

referenced_major_id

int

ID der (unabhängigen) Entität, auf die verwiesen wird. Die ID wird interpretiert nach dem Wert der Klasse, wobei Folgendes gilt:

0, 1 = Objekt-ID des Objekts oder der Spalte.

2 = Typ-ID.

3 = XML-Schemaauflistungs-ID.

referenced_minor_id

int

Sekundäre ID der (unabhängigen) Entität, auf die verwiesen wird. Die ID wird interpretiert nach dem Wert der Klasse, wobei Folgendes gilt:

Wenn class =:

0, ist referenced_minor_id eine Spalten-ID, oder falls es sich nicht um eine Spalte handelt, ist der Wert 0.

1, ist referenced_minor_id eine Spalten-ID, oder falls es sich nicht um eine Spalte handelt, ist der Wert 0.

Andernfalls gilt referenced_minor_id = 0.

is_selected

bit

Objekt oder Spalte ist ausgewählt.

is_updated

bit

Objekt oder Spalte ist aktualisiert.

is_select_all

bit

Objekt wird in SELECT *-Anweisung verwendet (nur auf Objektebene).

Hinweise

Abhängigkeiten werden nur dann während der Ausführung von CREATE erstellt, wenn die (unabhängige) Entität, auf die verwiesen wird, zu dem Zeitpunkt vorhanden ist, an dem das verweisende (abhängige) Objekt erstellt wird. Aufgrund der verzögerten Namensauflösung muss die Entität, auf die verwiesen wird, zum Zeitpunkt der Erstellung noch nicht vorhanden sein. In diesem Fall wird keine Abhängigkeitszeile erstellt. Zudem gilt, dass Entitäten, auf die durch dynamische SQL-Anweisungen verwiesen wird, keine Abhängigkeiten einrichten.

Wenn die (unabhängige) Entität, auf die verwiesen wird, mithilfe von DROP gelöscht wird, wird die Abhängigkeitszeile automatisch gelöscht. Die Abhängigkeitszeile kann wieder eingerichtet werden, wenn Sie mithilfe von CREATE beide in der richtigen Abhängigkeitsreihenfolge erneut erstellen.

Sowohl schemagebundene als auch nicht schemagebundene Abhängigkeiten werden für Objekte nachverfolgt. CHECK-Einstellungen, Standardwerte und Verweise auf berechnete Spalten sind implizit schemagebunden. Abhängigkeiten von Typen, XML-Schemaauflistungen und Partitionsfunktionen werden nur für schemagebundene Abhängigkeiten nachverfolgt. In SQL Server 2005 Service Pack 1 und früheren Versionen sind die Parameter, die in einer Transact-SQL-Funktion oder -Prozedur definiert werden, implizit schemagebunden. Daher können Parameter, die von einem CLR-benutzerdefinierten Typ, Alias oder von einer XML-Schemaauflistung abhängig sind, mithilfe der sys.sql_dependencies-Katalogsicht angezeigt werden. Dies bedeutet jedoch, dass diese Objekte nicht umbenannt werden können. In SQL Server 2005 Service Pack 2 werden Parameter, die von diesen Objekten abhängig sind, in der Katalogsicht nur dann nachverfolgt, wenn das Transact-SQL-Modul mit Schemabindung erstellt wird. Ein CLR-benutzerdefinierter Typ, Alias oder eine XML-Schemaauflistung, die als Parameter in einem Modul verwendet werden, das nicht schemagebunden ist, können umbenannt werden, die Definition des Moduls muss jedoch möglicherweise mithilfe von sp_refreshsqlmodule aktualisiert werden.

Beispiele

A. Suchen der Abhängigkeiten von einer angegebenen Funktion

Im folgenden Beispiel werden die Abhängigkeiten von der angegebenen Funktion zurückgegeben. Vor dem Ausführen der folgenden Abfrage ersetzen Sie <database_name> und <schema_name.function_name> durch gültige Namen.

USE <database_name>;
GO
SELECT OBJECT_NAME(object_id) AS referencing_object_name
    ,COALESCE(COL_NAME(object_id, column_id), '(n/a)') AS referencing_column_name
    ,*
FROM sys.sql_dependencies
WHERE referenced_major_id = OBJECT_ID('<schema_name.function_name>')
ORDER BY OBJECT_NAME(object_id), COL_NAME(object_id, column_id);
GO 

B. Suchen der CHECK-Einschränkungen, die von einem angegebenen CLR-benutzerdefinierten Typ abhängig sind

Vor dem Ausführen der folgenden Abfrage ersetzen Sie <database_name> durch einen gültigen Namen und <schema_name.data_type_name> durch einen gültigen CLR-benutzerdefinierten Typ-Namen, der im Schema qualifiziert ist.

USE <database_name>;
GO
SELECT SCHEMA_NAME(o.schema_id) AS schema_name
    ,OBJECT_NAME(o.parent_object_id) AS table_name
    ,OBJECT_NAME(o.object_id) AS constraint_name
FROM sys.sql_dependencies AS d
JOIN sys.objects AS o ON o.object_id = d.object_id
WHERE referenced_major_id = TYPE_ID('<schema_name.data_type_name>')
    AND class = 2 -- schema-bound references to type
    AND OBJECTPROPERTY(o.object_id, 'IsCheckCnst') = 1; -- exclude non-CHECK dependencies
GO

C. Suchen der Sichten, Transact-SQL-Funktionen und gespeicherten Prozeduren von Transact-SQL, die von einem angegebenen CLR-benutzerdefinierten Typ oder Aliasdatentyp abhängig sind

Mit der folgenden Abfrage werden alle schemagebundenen Abhängigkeiten in Sichten, Transact-SQL-Funktionen und gespeicherten Prozeduren von Transact-SQL für einen angegebenen CLR-benutzerdefinierten Typ oder Aliastyp zurückgegeben.

USE <database_name>;
GO
SELECT SCHEMA_NAME(o.schema_id) AS dependent_object_schema
  ,OBJECT_NAME(o.object_id) AS dependent_object_name
  ,o.type_desc AS dependent_object_type
  ,d.class_desc AS kind_of_dependency
  ,TYPE_NAME (d.referenced_major_id) AS type_name
FROM sys.sql_dependencies AS d 
JOIN sys.objects AS o
  ON d.object_id = o.object_id
  AND o.type IN ('FN','IF','TF', 'V', 'P')
WHERE d.class = 2 -- dependencies on types
  AND d.referenced_major_id = TYPE_ID('<schema_name.data_type_name>')
ORDER BY dependent_object_schema, dependent_object_name;
GO

Siehe auch

Verweis

Katalogsichten (Transact-SQL)
Katalogsichten für Objekte (Transact-SQL)
sp_rename (Transact-SQL)
sp_refreshsqlmodule (Transact-SQL)

Andere Ressourcen

Implementieren benutzerdefinierter Typen
Grundlegendes zu SQL-Abhängigkeiten
FAQ: Abfragen des SQL Server-Systemkatalogs
Verwalten von XML-Schemaauflistungen auf dem Server

Hilfe und Informationen

Informationsquellen für SQL Server 2005

Änderungsverlauf

Version Verlauf

12. Dezember 2006

Neuer Inhalt:
  • Es wurden Informationen zu Abhängigkeiten von benutzerdefinierten Typen, Aliasen und XML-Schemaauflistungen für die Deklaration dieser Objekte als Parameter in Transact-SQL-Modulen hinzugefügt.
  • Der Abschnitt "Beispiele" wurde hinzugefügt.