sys.dm_db_uncontained_entities (Transact-SQL)
Gilt für: SQL Server
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 Ihre Datenbank keine nicht verwalteten 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 = Datenbank-DDL-Trigger 19 = Route 30 = Überwachungsspezifikation |
class_desc | nvarchar(120) | Klassenbeschreibung der Entitätsklasse. Eine der folgenden Aktionen, die mit der Klasse übereinstimmen: OBJECT_OR_COLUMN DATABASE_PRINCIPAL ASSEMBLY TYPE INDEX DATABASE_DDL_TRIGGER ROUTE AUDIT_SPECIFICATION |
major_id | int | Die ID der Entität. Wenn Klasse = 1, dann object_id Wenn Klasse = 4, dann sys.database_principals.principal_id. Wenn Klasse = 5, dann sys.assemblies.assembly_id. Wenn Klasse = 6, dann sys.types.user_type_id. Wenn Klasse = 7, dann sys.indexes.index_id. Wenn Klasse = 12, dann sys.triggers.object_id. Wenn Klasse = 19, dann sys.routes.route_id. Wenn Klasse = 30, dann sys. database_audit_specifications.database_specification_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 diese Entitäten an, die potenziell die Datenbankgrenze überschreiten können. 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 über eine Art von Berechtigung verfügt. Um die Eindämmung der Datenbank vollständig auszuwerten, sollte diese Funktion von einem Benutzer mit hoher Berechtigung verwendet werden, z. B. von einem Mitglied der festen Serverrolle "sysadmin " oder 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;