sys.dm_db_uncontained_entities (Transact-SQL)
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 utilizza entità non contenute.
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 valori seguenti in base alla classe.
|
major_id |
int |
ID dell'entità. Se class = 1, object_id Se class = 4, sys.database_principals.principal_id. Se class = 5, sys.assemblies.assembly_id. Se class = 6, sys.types.user_type_id. Se class = 7, sys.indexes.index_id. Se class = 12, sys.triggers.object_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. |
feature_ name |
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 potenzialmente possono 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 cui l'utente dispone di un qualsiasi tipo di autorizzazione. Per una valutazione completa dell'indipendenza del database, questa funzione deve essere utilizzata da un utente con privilegi elevati, ad esempio un membro del ruolo predefinito del server sysadmin o del 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;