sys.dm_db_uncontained_entities (Transact-SQL)

Si applica a:SQL Server

Mostra qualsiasi oggetto non contenuto utilizzato nel database. Gli oggetti non contenuti sono oggetti che superano il limite del database in un database indipendente. Questa vista è accessibile sia da un database indipendente che da un database non indipendente. Se sys.dm_db_uncontained_entities è vuoto, il database non usa entità non vincolate.

Se un modulo supera il limite del database più di una volta, viene riportato solo il primo superamento individuato.

Nome colonna Tipo Descrizione
class int 1 = Oggetto o colonna (include moduli, XP, viste, sinonimi e tabelle).

4 = Entità di database

5 = Assembly

6 = Tipo

7 = Indice (indice full-text)

12 = Trigger DDL database

19 = Route

30 = Specifica del controllo
class_desc nvarchar(120) Descrizione della classe dell'entità. Uno dei seguenti elementi per trovare la corrispondenza con la classe :

OBJECT_OR_COLUMN

DATABASE_PRINCIPAL

ASSEMBLY

TYPE

INDEX

DATABASE_DDL_TRIGGER

ROUTE

AUDIT_SPECIFICATION
major_id int ID dell'entità.

Se la classe = 1, object_id

Se la classe = 4, sys.database_principals.principal_id.

Se classe = 5, sys.assemblies.assembly_id.

Se la classe = 6, sys.types.user_type_id.

Se classe = 7, sys.indexes.index_id.

Se la classe = 12, sys.triggers.object_id.

Se la classe = 19, sys.routes.route_id.

Se la classe = 30, sys. database_audit_specifications.database_specification_id.
statement_line_number int Se la classe è un modulo, restituisce il numero di riga in cui si trova l'utilizzo non contenuto. In caso contrario, il valore è Null.
statement_ offset_begin int Se la classe è un modulo, indica la posizione iniziale dell'utilizzo non contenuto partendo da 0. Il valore viene espresso in byte. In caso contrario, il valore restituito è Null.
statement_ offset_end int Se la classe è un modulo, indica la posizione finale dell'utilizzo non contenuto partendo da 0. Il valore viene espresso in byte. Il valore -1 indica la fine del modulo. In caso contrario, il valore restituito è Null.
statement_type nvarchar(512) Tipo di istruzione.
nome feature_ nvarchar(256) Restituisce il nome esterno dell'oggetto.
feature_type_name nvarchar(256) Restituisce il tipo di funzionalità.

Osservazioni:

sys.dm_db_uncontained_entities mostra le entità che possono potenzialmente superare il limite del database. Restituirà le entità utente che possono utilizzare gli oggetti al di fuori del database.

I tipi di funzionalità seguenti vengono segnalati.

  • Comportamento di indipendenza sconosciuto (SQL dinamico o risoluzione dei nomi posticipata)

  • Comando DBCC

  • Stored procedure di sistema

  • Funzione scalare di sistema

  • Funzione con valori di tabella di sistema

  • Funzione predefinita di sistema

Sicurezza

Autorizzazioni

sys.dm_db_uncontained_entities restituisce solo oggetti per i quali l'utente dispone di un tipo di autorizzazione. Per valutare completamente il contenimento del database, questa funzione deve essere usata da un utente con privilegi elevati, ad esempio un membro del ruolo predefinito del server sysadmin o il ruolo db_owner .

Esempi

Nell'esempio seguente viene creata una procedura denominata P1, quindi viene eseguita una query su sys.dm_db_uncontained_entities. Nella query viene segnalato che P1 utilizza sys.endpoints , che si trova all'esterno del database.

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;  

Vedi anche

Database indipendenti