Outras consultas que me pediram a aproximadamente um ano atrás e não publiquei no site, recuperam uma lista das colunas de cada tabela do banco de dados do SQL Server.
Basicamente, podemos utilizar a view INFORMATION_SCHEMA.COLUMNS, ou montar a nossa própria consulta com sys.columns:
SELECT s.name as [schema], t.name as [table], c.name AS [column] FROM sys.schemas s INNER JOIN sys.tables t ON s.[schema_id] = t.[schema_id] INNER JOIN sys.columns c ON t.[object_id] = c.[object_id]
Ou
SELECT TABLE_SCHEMA as [schema] , TABLE_NAME as [table] , COLUMN_NAME as [column] FROM [INFORMATION_SCHEMA].[COLUMNS]
Exemplo de execução:
Para trazer a relação de todas as colunas de cada tabela em uma só linha, precisaremos de um pouco de criatividade com FOR XML e CROSS APPLY:
SELECT s.name as [schema], t.name as [table] , SUBSTRING(c.[columns], 0, LEN(c.[columns])) AS [columns] FROM sys.schemas s INNER JOIN sys.tables t ON s.[schema_id] = t.[schema_id] -- Relação de colunas [columns] CROSS APPLY ( SELECT ( SELECT c.name + ', ' FROM sys.columns c WHERE t.[object_id] = c.[object_id] FOR XML PATH('') ) AS [columns] ) AS c
Exemplo de execução: