Listar las tablas y columnas de una Base deDatos

Hoy me encontré con una petición bastante inusual (inusual, porque nunca me lo habían pedido antes…). ¿Como obtengo una lista de TODAS las tablas y TODAS las columnas de una Base de Datos?

No fue menor la solicitud. Obtener el listado de todas las columnas de una tabla no es difícil, pero esta Base de Datos tenia cerca de 60 tablas y algunas de estas tablas tienen casi 20 columnas, la tarea se hacía un poco tediosa.

Hasta que se me ocurrió ponerme a cachurear por ahí y encontré las siguientes consultas:

Para Bases de Datos SQL Server 2000

SELECT SO.NAME, SC.NAME

FROM sysobjects SO INNER JOIN syscolumns SC

ON SO.ID = SC.ID

WHERE SO.XTYPE = ‘U’

ORDER BY SO.NAME, SC.NAME

Para Bases de Datos SQL Server 2005

SELECT SO.NAME, SC.NAME

FROM sys.objects SO INNER JOIN sys.columns SC

ON SO.OBJECT_ID = SC.OBJECT_ID

WHERE SO.TYPE = ‘U’

ORDER BY SO.NAME, SC.NAME

 

Como siempre, sus dudas y comentarios son bienvenidos.