Freigeben über


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.

  • OBJECT_OR_COLUMN

  • DATABASE_PRINCIPAL

  • ASSEMBLY

  • TYPE

  • INDEX

  • DATABASE_DDL_TRIGGER

  • ROUTE

  • AUDIT_SPECIFICATION

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;

Siehe auch

Konzepte

Enthaltene Datenbank