I created a script to create a data dictionary in July of 2006 mainly for SQL 2005 and it did work with 2008. However, I realized that it wasn't dynamic enough for a real time data dictionary and had other developers complaining that the dictionary wasn't up to date.
So I created the two stored procedures, code attached and a SQL Server Reporting Service (SSRS) report and when the report is rendered the informationis up to date as of the date the report ran. I'm running the SSRS report using the two stored procedures against a database that has 50 tables and the report rendered within 10 seconds.
Of course the more tables the more time before the report is rendered but at least I won't here that the dictionary is out dated.
So here is what the stored procedures do:
The first stored procedure gets the table name and description, if the description has been added either via the GUI of table design or through the sp_addextendedproperty command.
The second stored procedure provides information on the columns within the table, the information that is returned is the column name, datatype with the length defined, if the column is nullable, default value and the description if added via GUI or sp_addextendedpropery command.
Hope this is helpful to someone.