sys.objects (Transact-SQL)

Contém uma linha para cada objeto no escopo do esquema definido pelo usuário que é criado em um banco de dados.

ObservaçãoObservação

sys.objects não mostra gatilhos DDL, porque eles não estão no escopo do esquema. Todos os gatilhos, DML e DDL, estão localizados em sys.triggers. sys.triggers dá suporte a uma combinação de regras de escopo de nome para vários tipos de gatilhos.

Nome da coluna

Tipo de dados

Descrição

nome

sysname

Nome do objeto.

object_id

int

Número de identificação do objeto. É exclusivo em um banco de dados.

principal_id

int

ID do proprietário individual, se for diferente do proprietário do esquema. Por padrão, os objetos contidos no esquema pertencem ao proprietário do esquema. Porém, outro proprietário pode ser especificado usando a instrução ALTER AUTHORIZATION para alterar a propriedade.

Será NULL se não houver nenhum proprietário individual alternativo.

Será NULL se o tipo de objeto for um dos seguintes:

C = Restrição CHECK

D = DEFAULT (restrição ou autônomo)

F = Restrição FOREIGN KEY

PK = Restrição PRIMARY KEY

R = Regra (estilo antigo, autônomo)

TA = Gatilho de assembly (integração CLR)

TR = Gatilho SQL

UQ = Restrição UNIQUE

schema_id

int

ID do esquema em que o objeto está contido.

Os objetos do sistema de escopo de esquema estão sempre contidos nos esquemas sys ou INFORMATION_SCHEMA.

parent_object_id

int

ID do objeto ao qual esse objeto pertence.

0 = Não é um objeto filho.

tipo

char(2)

Tipo de objeto:

AF = Função de agregação (CLR)

C = Restrição CHECK

D = DEFAULT (restrição ou autônomo)

F = Restrição FOREIGN KEY

FN = Função escalar SQL

FS = Função escalar de assembly (CLR)

FT = Função avaliada por tabela de assembly (CLR)

IF = Função SQL com valor de tabela embutida

IT = Tabela interna

P = Procedimento armazenado SQL

PC = Procedimento armazenado de assembly (CLR)

PG = Guia de plano

PK = Restrição PRIMARY KEY

R = Regra (estilo antigo, autônomo)

RF = Procedimento de filtro de replicação

S = Tabela base do sistema

SN = Sinônimo

SQ = Fila de serviço

TA = Gatilho DML de assembly (CLR)

TF = Função com valor de tabela SQL

TR = Gatilho DML de SQL

TT = Tipo de tabela

U = Tabela (definida pelo usuário)

UQ = Restrição UNIQUE

V = Exibição

X = Procedimento armazenado estendido

type_desc

nvarchar(60)

Descrição do tipo de objeto:

AGGREGATE_FUNCTION

CHECK_CONSTRAINT

DEFAULT_CONSTRAINT

FOREIGN_KEY_CONSTRAINT

SQL_SCALAR_FUNCTION

CLR_SCALAR_FUNCTION

CLR_TABLE_VALUED_FUNCTION

SQL_INLINE_TABLE_VALUED_FUNCTION

INTERNAL_TABLE

SQL_STORED_PROCEDURE

CLR_STORED_PROCEDURE

PLAN_GUIDE

PRIMARY_KEY_CONSTRAINT

RULE

REPLICATION_FILTER_PROCEDURE

SYSTEM_TABLE

SYNONYM

SERVICE_QUEUE

CLR_TRIGGER

SQL_TABLE_VALUED_FUNCTION

SQL_TRIGGER

TABLE_TYPE

USER_TABLE

UNIQUE_CONSTRAINT

VIEW

EXTENDED_STORED_PROCEDURE

create_date

datetime

A data em que o objeto foi criado.

modify_date

datetime

A data em que o objeto foi modificado pela última vez com o uso de uma instrução ALTER. Se o objeto for uma tabela ou uma exibição, modify_date também será alterado quando um índice clusterizado na tabela ou na exibição for criado ou alterado.

is_ms_shipped

bit

O objeto é criado por um componente interno do SQL Server.

is_published

bit

O objeto é publicado.

is_schema_published

bit

Somente o esquema do objeto é publicado.

Comentários

É possível aplicar as funções internas OBJECT_ID, OBJECT_NAME e OBJECTPROPERTY() para os objetos mostrados em sys.objects.

Há uma versão desta exibição com o mesmo esquema, chamada sys.system_objects, que mostra os objetos do sistema. Há outra exibição denominada sys.all_objects que mostra os objetos do sistema e de usuário. Todas as três exibições do catálogo têm a mesma estrutura.

Nesta versão do SQL Server, um índice estendido, como um índice XML ou índice espacial, é considerado uma tabela interna em sys.objects (type = IT and type_desc = INTERNAL_TABLE). Para um índice estendido:

  • name é o nome interno da tabela de índice.

  • parent_object_id é o object_id da tabela base.

  • As colunas is_ms_shipped, is_published e is_schema_published são definidas como 0.

Permissões

No SQL Server 2005 e em versões posteriores, a visibilidade de metadados em exibições do catálogo é limitada a protegíveis que um usuário possui ou para os quais recebeu alguma permissão. Para obter mais informações, consulte Configuração de visibilidade de metadados.

Exemplos

A. Retornando todos os objetos que foram modificados nos últimos N dias

Antes de executar a consulta a seguir, substitua <database_name> e <n_days> por valores válidos.

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. Retornando os parâmetros para uma função ou procedimento armazenado especificado

Antes de executar a consulta a seguir, substitua <database_name> e <schema_name.object_name> por nomes válidos.

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. Retornando todas as funções definidas pelo usuário em um banco de dados

Antes de executar a consulta a seguir, substitua <database_name> pelo nome de um banco de dados válido.

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. Retornando o proprietário de cada objeto em um esquema.

Antes de executar a consulta a seguir, substitua todas as ocorrências de <database_name> e <schema_name> por nomes válidos.

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