I have recently put together the following script for listing table structures which people may find useful
DECLARE @Table_Name nvarchar(128)
--SELECT * FROM INFORMATION_SCHEMA.TABLES
DECLARE myCursor CURSOR
FOR SELECT [TABLE_NAME] FROM INFORMATION_SCHEMA.TABLES
WHERE [TABLE_NAME]<>'sysdiagrams'
ORDER BY [TABLE_NAME]
----
OPEN myCursor
FETCH NEXT FROM myCursor
INTO @Table_Name
WHILE (@@FETCH_STATUS=0)
BEGIN
SELECT "table_name"='['+[TABLE_NAME]+']',"ordinal_position"=-1 FROM INFORMATION_SCHEMA.TABLES
WHERE [TABLE_NAME]=@Table_Name
Union
Select
column_name+' ('+
data_type + CASE WHEN left(data_type,2)='bi'
THEN ''
WHEN data_type='datetime'
THEN ''
WHEN data_type='int'
THEN ''
WHEN character_maximum_length<0
THEN '(nomax)'
WHEN numeric_precision_radix>numeric_precision
THEN '('+convert(varchar(4),numeric_precision)+','+convert(varchar(4),numeric_scale)+')'
WHEN numeric_precision_radix<numeric_precision
THEN '('+convert(varchar(4),numeric_precision)+','+convert(varchar(4),numeric_scale)+')'
ELSE '('+convert(varchar(4),character_maximum_length)+')'
END
+ CASE WHEN is_nullable='NO'
THEN ', not null'
ELSE ', default='+ CASE WHEN column_default is null
THEN 'NULL'
ELSE column_default
END
END
+')'
,ordinal_position
FromINFORMATION_SCHEMA.COLUMNS c
Where [TABLE_NAME]=@Table_Name
Order by ordinal_position,table_name
FETCH NEXT FROM myCursor
INTO @Table_Name
END
----
CLOSE myCursor
DEALLOCATE myCursor