sys.dm_db_uncontained_entities (Transact-SQL)
Zeigt alle nicht enthaltenen Objekte an, die in der Datenbank verwendet werden. Nicht enthaltene Objekte sind Objekte, die die Datenbankbegrenzung in einer eigenständigen Datenbank überschreiten. Auf diese Sicht kann sowohl von einer eigenständigen Datenbank als auch von einer abhängigen Datenbank zugegriffen werden. Wenn sys.dm_db_uncontained_entities leer ist, verwendet die Datenbank nur enthaltene Entitäten.
Wenn die Datenbankbegrenzung von einem Modul mehrmals überschritten wird, wird nur die erste Überschreitung gemeldet.
Spaltenname |
Typ |
Beschreibung |
class |
int |
1 = Objekt oder Spalte (einschließlich Modulen, XPs, Sichten, Synonymen und Tabellen). 4 = Datenbankprinzipal 5 = Assembly 6 = Typ 7 = Index (Volltextindex) 12 = DDL-Trigger auf Datenbankebene 19 = Route 30 = Überwachungsspezifikation |
class_desc |
nvarchar(120) |
Klassenbeschreibung der Entitätsklasse. Eine der folgenden Entsprechungen für die Klasse.
|
major_id |
int |
Die ID der Entität. Wenn class = 1, die object_id. Wenn class = 4, die sys.database_principals.principal_id. Wenn class = 5, die sys.assemblies.assembly_id. Wenn class = 6, die sys.types.user_type_id. Wenn class = 7, die sys.indexes.index_id. Wenn class = 12, die sys.triggers.object_id. |
statement_line_number |
int |
Wenn die Klasse ein Modul ist, wird die Zeilennummer für die nicht enthaltene Verwendung zurückgegeben. Anderenfalls ist der Wert NULL. |
statement_ offset_begin |
int |
Wenn die Klasse ein Modul ist, gibt dies die Startposition der nicht enthaltenen Verwendung in Byte an, beginnend bei 0. Andernfalls ist der Rückgabewert NULL. |
statement_ offset_end |
int |
Wenn die Klasse ein Modul ist, gibt dies die Endposition der nicht enthaltenen Verwendung in Byte an, beginnend bei 0. Der Wert -1 gibt das Ende des Moduls an. Andernfalls ist der Rückgabewert NULL. |
statement_type |
nvarchar(512) |
Der Typ der Anweisung. |
feature_ name |
nvarchar(256) |
Gibt den externen Namen des Objekts zurück. |
feature_type_name |
nvarchar(256) |
Gibt den Typ der Funktion zurück. |
Hinweise
sys.dm_db_uncontained_entities zeigt die Entitäten an, die möglicherweise die Datenbankbegrenzung überschreiten. Es werden alle Benutzerentitäten zurückgegeben, von denen Objekte außerhalb der Datenbank verwendet werden können.
Die folgenden Funktionstypen werden gemeldet.
Unbekanntes Kapselungsverhalten (dynamisches SQL oder verzögerte Namensauflösung)
DBCC-Befehl
Gespeicherte Systemprozeduren
Skalarsystemfunktion
Tabellenwert-Systemfunktion
Integrierte Systemfunktion
Sicherheit
Berechtigungen
sys.dm_db_uncontained_entities gibt nur Objekte zurück, für die der Benutzer eine Berechtigung besitzt. Um die Kapselung der Datenbank vollständig auszuwerten, sollte diese Funktion von einem Benutzer mit hohen Privilegien verwendet werden, beispielsweise von einem Mitglied der festen Serverrolle sysadmin oder einem Mitglied der Rolle db_owner.
Beispiele
Im folgenden Beispiel wird die Prozedur P1 erstellt, und sys.dm_db_uncontained_entities wird abgefragt. Die Abfrage meldet, dass sys.endpoints von P1 außerhalb der Datenbank verwendet wird.
CREATE DATABASE Test;
GO
USE Test;
GO
CREATE PROC P1
AS
SELECT * FROM sys.endpoints ;
GO
SELECT SO.name, UE.* FROM sys.dm_db_uncontained_entities AS UE
LEFT JOIN sys.objects AS SO
ON UE.major_id = SO.object_id;