Puede mirar las columnas en sys.columns :
Devuelve una fila para cada columna de un objeto que tiene columnas, como vistas o tablas. La siguiente es una lista de tipos de objetos que tienen columnas:
- Funciones de ensamblaje con valores de tabla (FT)
- Funciones SQL (IF) con valores de tabla en línea
- Tablas internas (IT)
- Tablas del sistema (S)
- Funciones SQL con valores de tabla (TF)
- Tablas de usuario (U)
- Vistas (V)
Para el recuento de columnas en tablas, esta consulta se puede utilizar:
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 se puede reemplazar por sys.views para contar en vistas
sys.objects también se puede usar con una WHERE
cláusula sobre los tipos requeridos:
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;
Esto también funcionaría, aunque es preferible (lea el caso contra las vistas de INFORMATION_SCHEMA de Aaron Bertrand) usar la primera consulta:
SELECT TABLE_SCHEMA
, TABLE_NAME
, number = COUNT(*)
FROM INFORMATION_SCHEMA.COLUMNS
GROUP BY TABLE_SCHEMA, TABLE_NAME;
fuente