sys.objects (Transact-SQL)
Contiene una riga per ogni oggetto con ambito schema definito dall'utente creato in un database.
[!NOTA]
In sys.objects non vengono visualizzati trigger DDL. Questi oggetti, infatti, non sono definiti a livello di ambito di schema. Tutti trigger, sia DML sia DDL, sono disponibili in sys.triggers. sys.triggers supporta una combinazione di regole per l'ambito dei nomi per i diversi tipi di trigger.
Nome colonna |
Tipo di dati |
Descrizione |
---|---|---|
name |
sysname |
Nome dell'oggetto. |
object_id |
int |
Numero di identificazione dell'oggetto. Valore univoco all'interno di un database. |
principal_id |
int |
ID del singolo proprietario, se diverso dal proprietario dello schema. Per impostazione predefinita, gli oggetti contenuti nello schema appartengono al proprietario dello schema stesso. È tuttavia possibile specificare un altro proprietario modificando la proprietà mediante l'istruzione ALTER AUTHORIZATION. È NULL se non esiste un singolo proprietario alternativo. È NULL se il tipo di oggetto è uno dei seguenti: C = vincolo CHECK D = DEFAULT (vincolo o valore autonomo) F = vincolo FOREIGN KEY PK = vincolo PRIMARY KEY R = regola (tipo obsoleto, autonoma) TA = trigger di assembly (integrazione con CLR) TR = trigger SQL UQ = vincolo UNIQUE |
schema_id |
int |
ID dello schema che contiene l'oggetto. Gli oggetti di sistema con ambito schema sono sempre inclusi negli schemi sys o INFORMATION_SCHEMA. |
parent_object_id |
int |
ID dell'oggetto a cui appartiene l'oggetto. 0 = non è un oggetto figlio. |
type |
char(2) |
Tipo di oggetto: AF = funzione di aggregazione (CLR) C = vincolo CHECK D = DEFAULT (vincolo o valore autonomo) F = vincolo FOREIGN KEY FN = funzione scalare SQL FS = funzione scalare di assembly (CLR) FT = funzione valutata a livello di tabella assembly (CLR) IF = funzione SQL inline valutata a livello di tabella IT = tabella interna P = stored procedure SQL PC = stored procedure di assembly (CLR) PG = guida di piano PK = vincolo PRIMARY KEY R = regola (tipo obsoleto, autonoma) RF = procedura-filtro-replica S = tabella di base di sistema SN = sinonimo SO = oggetto sequenza SQ = coda di servizio TA = trigger DML assembly (CLR) TF = funzione valutata a livello di tabella SQL TR = trigger DML SQL TT = tipo tabella U = tabella (definita dall'utente) UQ = vincolo UNIQUE V = vista X = stored procedure estesa |
type_desc |
nvarchar(60) |
Descrizione del tipo di oggetto: AGGREGATE_FUNCTION CHECK_CONSTRAINT CLR_SCALAR_FUNCTION CLR_STORED_PROCEDURE CLR_TABLE_VALUED_FUNCTION CLR_TRIGGER DEFAULT_CONSTRAINT EXTENDED_STORED_PROCEDURE FOREIGN_KEY_CONSTRAINT INTERNAL_TABLE PLAN_GUIDE PRIMARY_KEY_CONSTRAINT REPLICATION_FILTER_PROCEDURE RULE SEQUENCE_OBJECT SERVICE_QUEUE SQL_INLINE_TABLE_VALUED_FUNCTION SQL_SCALAR_FUNCTION SQL_STORED_PROCEDURE SQL_TABLE_VALUED_FUNCTION SQL_TRIGGER SYNONYM SYSTEM_TABLE TABLE_TYPE UNIQUE_CONSTRAINT USER_TABLE VIEW |
create_date |
datetime |
Data di creazione dell'oggetto. |
modify_date |
datetime |
Data dell'ultima modifica apportata all'oggetto mediante un'istruzione ALTER. Se l'oggetto è una tabella o una vista, modify_date cambia anche quando si crea o si modifica un indice nella tabella o nella vista. |
is_ms_shipped |
bit |
Oggetto creato da un componente di SQL Server interno. |
is_published |
bit |
L'oggetto viene pubblicato. |
is_schema_published |
bit |
Viene pubblicato solo lo schema dell'oggetto. |
Osservazioni
È possibile applicare le funzioni predefinite OBJECT_ID, OBJECT_NAME e OBJECTPROPERTY() agli oggetti visualizzati in sys.objects.
Una versione di questa vista, denominata sys.system_objects, con lo stesso schema, consente di visualizzare oggetti di sistema. È inoltre disponibile un'altra vista, denominata sys.all_objects, che consente di visualizzare oggetti utente e di sistema. Le tre viste del catalogo hanno tutte la stessa struttura.
In questa versione di SQL Server un indice esteso, ad esempio un indice XML o un indice spaziale, è considerato una tabella interna in sys.objects (type = IT e type_desc = INTERNAL_TABLE). Per un indice esteso:
name è il nome interno della tabella dell'indice.
parent_object_id corrisponde a object_id della tabella di base.
Le colonne is_ms_shipped, is_published e is_schema_published sono impostate su 0.
Autorizzazioni
La visibilità dei metadati nelle viste del catalogo è limitata alle entità a protezione diretta di cui l'utente è proprietario o per le quali dispone di autorizzazioni. Per ulteriori informazioni, vedere Configurazione della visibilità dei metadati.
Esempi
A.Restituzione di tutti gli oggetti modificati negli ultimi N giorni
Prima di eseguire la query seguente, sostituire <database_name> e <n_days> con valori validi.
USE <database_name>;
GO
SELECT name AS object_name
,SCHEMA_NAME(schema_id) AS schema_name
,type_desc
,create_date
,modify_date
FROM sys.objects
WHERE modify_date > GETDATE() - <n_days>
ORDER BY modify_date;
GO
B.Restituzione dei parametri per una stored procedure o una funzione specifica
Prima di eseguire la query seguente, sostituire <database_name> e <schema_name.object_name> con nomi validi.
USE <database_name>;
GO
SELECT SCHEMA_NAME(schema_id) AS schema_name
,o.name AS object_name
,o.type_desc
,p.parameter_id
,p.name AS parameter_name
,TYPE_NAME(p.user_type_id) AS parameter_type
,p.max_length
,p.precision
,p.scale
,p.is_output
FROM sys.objects AS o
INNER JOIN sys.parameters AS p ON o.object_id = p.object_id
WHERE o.object_id = OBJECT_ID('<schema_name.object_name>')
ORDER BY schema_name, o.object_name, p.parameter_id;
GO
C.Restituzione di tutte le funzioni definite dall'utente in un database
Prima di eseguire la query seguente, sostituire <database_name> con un nome di database valido.
USE <database_name>;
GO
SELECT name AS function_name
,SCHEMA_NAME(schema_id) AS schema_name
,type_desc
,create_date
,modify_date
FROM sys.objects
WHERE type_desc LIKE '%FUNCTION%';
GO
D.Restituzione del proprietario di ogni oggetto in uno schema.
Prima di eseguire la query seguente, sostituire tutte le occorrenze di <database_name> e <schema_name> con nomi validi.
USE <database_name>;
GO
SELECT 'OBJECT' AS entity_type
,USER_NAME(OBJECTPROPERTY(object_id, 'OwnerId')) AS owner_name
,name
FROM sys.objects WHERE SCHEMA_NAME(schema_id) = '<schema_name>'
UNION
SELECT 'TYPE' AS entity_type
,USER_NAME(TYPEPROPERTY(SCHEMA_NAME(schema_id) + '.' + name, 'OwnerId')) AS owner_name
,name
FROM sys.types WHERE SCHEMA_NAME(schema_id) = '<schema_name>'
UNION
SELECT 'XML SCHEMA COLLECTION' AS entity_type
,COALESCE(USER_NAME(xsc.principal_id),USER_NAME(s.principal_id)) AS owner_name
,xsc.name
FROM sys.xml_schema_collections AS xsc JOIN sys.schemas AS s
ON s.schema_id = xsc.schema_id
WHERE s.name = '<schema_name>';
GO
Vedere anche
Riferimento
Viste del catalogo (Transact-SQL)
sys.all_objects (Transact-SQL)
sys.system_objects (Transact-SQL)
Viste del catalogo per gli oggetti (Transact-SQL)
sys.internal_tables (Transact-SQL)
Concetti
Domande frequenti sull'esecuzione di query sul catalogo di sistema di SQL Server