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 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 = Datenbank-DDL-Trigger

19 = Route

30 = Überwachungsspezifikation
class_desc nvarchar(120) Klassenbeschreibung der Entitätsklasse. Eine der folgenden, um der -Klasse zu entsprechen:

OBJECT_OR_COLUMN

DATABASE_PRINCIPAL

VERSAMMLUNG

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.

Bemerkungen

sys.dm_db_uncontained_entities zeigt die Entitäten an, die möglicherweise 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 eine Berechtigung besitzt. Um die Eindämmung der Datenbank vollständig auszuwerten, sollte diese Funktion von einem Benutzer mit hohen Berechtigungen wie einem Mitglied der festen Serverrolle sysadmin oder der db_owner-Rolle verwendet werden.

Beispiele

Im folgenden Beispiel wird die Prozedur P1 erstellt, und sys.dm_db_uncontained_entitieswird 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;  

Weitere Informationen

Eigenständige Datenbanken