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_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 |
|