Qual é a melhor maneira de obter os nomes de todas as tabelas em um banco de dados específico no SQL Server?
895
Qual é a melhor maneira de obter os nomes de todas as tabelas em um banco de dados específico no SQL Server?
SHOW TABLES
(como o usado no MySQL) trabalho?Respostas:
SQL Server 2000, 2005, 2008, 2012, 2014, 2016, 2017 ou 2019:
Para mostrar apenas tabelas de um banco de dados específico
Ou,
PS: para SQL Server 2000:
fonte
WHERE TABLE_TYPE='BASE TABLE'
incluirá apenas tabelas base (e por extensão você sempre pode usarWHERE TABLE_TYPE != 'VIEW'
).AND name <> 'sysdiagrams'
.Aqui está uma lista de outros tipos de objetos que você também pode procurar:
fonte
SELECT name FROM sysobjects WHERE xtype = 'U'
faria a mesma coisa.PK,FK,D,C,V,UQ
etc para comparar o banco de dados de origem e destino, mas então encontrei esse recurso no VS, mas não existe umsql query
para comparar o banco de dados completo de origem e destino?'U'
é usado para identificar a Tabela de Usuários ... em vez de talvez'UT'
ou, o mais intuitivo,'T'
... Ah, bem, isso funciona!OU
fonte
OU
fonte
SQL Server 2012
fonte
fonte
(Padrão do SQL Server 2000; ainda com suporte no SQL Server 2005.)
fonte
select * from sysobjects where xtype='U'
fonte
fonte
SELECT name FROM sysobjects WHERE xtype='U' AND name <> 'sysdiagrams';
porque a tabela sysdiagrams, embora criada pelo Microsoft SQL Server Management Studio, tecnicamente não é uma tabela do sistema, mas geralmente gostamos de excluir de qualquer maneira.A desvantagem
INFORMATION_SCHEMA.TABLES
disso é que ele também inclui tabelas de sistema comodtproperties
e asMSpeer_...
tabelas, sem nenhuma maneira de diferenciá-las de suas próprias tabelas.Eu recomendaria usar
sys.objects
(a nova versão da exibição de sysobjects obsoleta ), que suporta a exclusão das tabelas do sistema:fonte
No SSMS, para obter todos os nomes de tabela totalmente qualificados em um banco de dados específico (por exemplo, "MyDatabase"):
Resultados:
fonte
Por favor, use isso. Você obterá nomes de tabela junto com nomes de esquema:
fonte
fonte
Graças a Ray Vega, cuja resposta fornece todas as tabelas de usuários em um banco de dados ...
sp_helptext mostra a consulta subjacente, resumida em ...
fonte
Bem, você pode usar sys.objects para obter todos os objetos de banco de dados.
OU
fonte
Este link pode fornecer muito mais informações sobre este tópico
fonte
O uso
SELECT * FROM INFORMATION_SCHEMA.COLUMNS
também mostra todas as tabelas e colunas relacionadas.fonte