25 novembro 2008

[SQL SERVER] Listar todas as tabelas e colunas em uma database

Com essa query, é possível fazer uma listagem das tabelas de uma database com as colunas e detalhes como tipo, tamanho, e se o campo aceita nulo. É possível listar os campos de uma tabela adicionando um filtro TABELAS.NAME = 'tabela desejada' ou listar as views (XTYPE = 'V') ou procedures (XTYPE = 'P')

SELECT
TABELAS.NAME AS TABELA,
COLUNAS.NAME AS COLUNA,
TIPOS.NAME AS TIPO,
COLUNAS.LENGTH AS TAMANHO,
COLUNAS.ISNULLABLE AS EH_NULO

FROM
SYSOBJECTS TABELAS
INNER JOIN SYSCOLUMNS COLUNAS ON (TABELAS.ID = COLUNAS.ID)
INNER JOIN SYSTYPES TIPOS ON (COLUNAS.USERTYPE = TIPOS.USERTYPE)
WHERE
TABELAS.XTYPE = 'U' /*'U' = TABELAS*/
ORDER BY TABELAS.NAME