• 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