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 | Type | 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;