Como obter a lista de todos os objetos de um banco de dados SQL Server
Nesta matéria do WebMundi.com, você vai aprender como listar todos os objetos de um banco de dados SQL Server (tabelas, views, procedures, funções, triggers, constraints etc.) e como filtrar por tipo ou buscar um objeto específico.
Onde ficam essas informações
O SQL Server armazena os metadados dos objetos de um banco em tabelas de sistema internas. O acesso a esses metadados é feito através de views de catálogo:
-
sysobjects: view de compatibilidade, herdada do SQL Server 2000. Ainda funciona nas versões atuais, mas está obsoleta — a Microsoft recomenda não usá-la em código novo. -
sys.objects: a view de catálogo atual (desde o SQL Server 2005), que deve ser usada em qualquer desenvolvimento novo.
Este artigo mostra a sintaxe moderna com sys.objects, com a equivalente antiga entre parênteses para quem ainda mantém scripts legados.
Listando todos os objetos do banco
USE BdWebMundi;
SELECT name, type, type_desc, create_date, modify_date
FROM sys.objects
ORDER BY name;
(Equivalente antigo: SELECT * FROM sysobjects)
Buscando um objeto específico pelo nome
USE BdWebMundi;
SELECT name, type, type_desc
FROM sys.objects
WHERE name LIKE 'TbWebMundi';
(Equivalente antigo: SELECT * FROM sysobjects WHERE name LIKE 'TbWebMundi')
Filtrando por tipo de objeto
Em sys.objects, o filtro é feito pela coluna type (dois caracteres). Na antiga sysobjects, a coluna equivalente é xtype.
| Código | Tipo de objeto |
|---|---|
| C | Check constraint |
| D | Default constraint |
| F | Foreign Key constraint |
| FN | Function (escalar) |
| IF | Function (inline table-valued) |
| TF | Function (table-valued) |
| P | Stored procedure |
| PK | Primary Key constraint |
| RF | Replication Filter stored procedure |
| S | System table |
| SN | Synonym |
| TR | Trigger (DML) |
| U | User table |
| UQ | Unique constraint |
| V | View |
| X | Extended stored procedure |
Dica: você não precisa decorar essa tabela — o próprio
sys.objectsjá traz a colunatype_desccom a descrição por extenso do tipo, o que evita ter que consultar essa lista toda vez.
Exemplos
USE BdWebMundi;
-- Retorna todas as triggers do banco BdWebMundi
SELECT name, type_desc
FROM sys.objects
WHERE type = 'TR';
-- Retorna todas as functions escalares do banco BdWebMundi
SELECT name, type_desc
FROM sys.objects
WHERE type = 'FN';
-- Retorna todas as tabelas de usuário
SELECT name, type_desc
FROM sys.objects
WHERE type = 'U';
(Equivalente antigo: SELECT * FROM sysobjects WHERE xtype = 'TR')
Views específicas por tipo de objeto
Além do filtro por type, o SQL Server moderno também oferece views de catálogo específicas para cada categoria de objeto, o que costuma deixar as consultas mais legíveis:
SELECT name FROM sys.tables; -- só tabelas
SELECT name FROM sys.views; -- só views
SELECT name FROM sys.procedures; -- só stored procedures
SELECT name FROM sys.triggers; -- só triggers
SELECT name, type_desc FROM sys.objects WHERE type IN ('FN','IF','TF'); -- functions
Conclusão
Listar objetos e buscar por tipo é uma tarefa comum no dia a dia de quem administra ou desenvolve sobre SQL Server. Embora sysobjects ainda funcione por compatibilidade, o caminho recomendado hoje é usar sys.objects (ou as views específicas como sys.tables e sys.procedures), que são mais completas, mais claras e garantidas em versões futuras do produto.
Espero que você tenha gostado desta matéria sobre como listar os objetos de um banco de dados MS SQL Server.
Se você gostou, compartilhe estas dicas com um amigo ou participe de nossas redes sociais. Caso queira nos incentivar a criar mais conteúdos como este, prestigie nossos anunciantes.
Um grande abraço!