sys.objects (Transact-SQL)

Si applica a:SQL ServerDatabase SQL di AzureIstanza gestita di SQL di AzureAzure Synapse AnalyticsPiattaforma di strumenti analitici (PDW)Endpoint di analisi SQL in Microsoft FabricWarehouse in Microsoft Fabric

Contiene una riga per ogni oggetto con ambito schema definito dall'utente creato all'interno di un database, incluse le funzioni scalari compilate in modo nativo.

Per altre informazioni, vedere Funzioni scalari definite dall'utente per OLTP in memoria.

Nota

sys.objects non mostra i trigger DDL, perché non sono con ambito schema. Tutti i trigger, DML e DDL, sono disponibili in sys.triggers. sys.triggers supporta una combinazione di regole di definizione dell'ambito dei nomi per i vari 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
EC = Vincolo di arco
schema_id int ID dello schema che contiene l'oggetto.

Gli oggetti di sistema con ambito costituito dallo 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
U = tabella (definita dall'utente)
V = vista

Si applica a: SQL Server 2012 (11.x) e versioni successive.

SQ = coda di servizio
TA = trigger DML assembly (CLR)
TF = funzione valutata a livello di tabella SQL
TR = trigger DML SQL
TT = tipo tabella
UQ = vincolo UNIQUE
X = stored procedure estesa

Si applica a: SQL Server 2014 (12.x) e versioni successive, database SQL di Azure, Azure Synapse Analytics, Piattaforma di analisi (PDW).

ST = STATS_TR edizione Enterprise

Si applica a: SQL Server 2016 (13.x) e versioni successive, database SQL di Azure, Azure Synapse Analytics, Piattaforma di analisi (PDW).

ET = Tabella esterna

Si applica a: SQL Server 2017 (14.x) e versioni successive, database SQL di Azure, Azure Synapse Analytics, Piattaforma di analisi (PDW).

EC = Vincolo di arco
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
EDGE_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
TYPE_TABLE
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 viene creato o modificato un indice nella tabella o nella vista.
is_ms_shipped bit L'oggetto viene creato da un componente interno di SQL Server.
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.

È disponibile una versione di questa vista con lo stesso schema, denominato sys.system_objects, che mostra gli oggetti di sistema. Esiste un'altra visualizzazione denominata sys.all_objects che mostra sia gli oggetti di sistema che gli oggetti utente. 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, viene considerato una tabella interna in sys.objects (tipo = IT e type_desc = INTERNAL_TABLE). Per un indice esteso:

  • name è il nome interno della tabella dell'indice.

  • parent_object_id è l'oggetto object_id della tabella di base.

  • is_ms_shippedLe is_published colonne e is_schema_published sono impostate su 0.

I subset degli oggetti possono essere visualizzati usando le viste di sistema per un tipo specifico di oggetto, ad esempio:

Autorizzazioni

La visibilità dei metadati nelle viste del catalogo è limitata alle entità a protezione diretta di cui un utente è proprietario o a cui l'utente ha concesso alcune autorizzazioni. Per altre informazioni, vedere Metadata Visibility Configuration.

Esempi

R. Restituisce 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. Restituire i parametri per una stored procedure o una funzione specificata

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, object_name, p.parameter_id;
GO

C. Restituire 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. Restituire il 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

Vedi anche