Você pode ver as colunas em sys.columns :
Retorna uma linha para cada coluna de um objeto que possui colunas, como visualizações ou tabelas. A seguir, é apresentada uma lista de tipos de objetos que possuem colunas:
- Funções de montagem com valor de tabela (FT)
- Funções SQL (IF) com valor de tabela embutido
- Tabelas internas (TI)
- Tabelas de sistema (S)
- Funções SQL (TF) com valor de tabela
- Tabelas de usuário (U)
- Visualizações (V)
Para contagem de colunas em tabelas, esta consulta pode ser usada:
SELECT [Schema] = s.name
, [Table] = t.name
, number = COUNT(*)
FROM sys.columns c
INNER JOIN sys.tables t ON c.object_id = t.object_id
INNER JOIN sys.schemas s ON t.schema_id = s.schema_id
GROUP BY t.name, s.name
- sys.tables pode ser substituído por sys.views para contagem em visualizações
sys.objects também pode ser usado com uma WHERE
cláusula no (s) tipo (s) necessário (s):
SELECT [Schema] = s.name
, [Table] = o.name
, number = COUNT(*)
, o.type_desc
FROM sys.columns c
INNER JOIN sys.objects o ON c.object_id = o.object_id
INNER JOIN sys.schemas s ON o.schema_id = s.schema_id
WHERE type IN (
'U' --> U = Table (user-defined)
, 'V' --> V = View
, ...)
GROUP BY o.name, s.name, o.type_desc;
Isso também funcionaria, embora seja preferível (leia O caso contra visualizações do VIEW_SCHEMA de Aaron Bertrand) usar a primeira consulta:
SELECT TABLE_SCHEMA
, TABLE_NAME
, number = COUNT(*)
FROM INFORMATION_SCHEMA.COLUMNS
GROUP BY TABLE_SCHEMA, TABLE_NAME;
fonte