• Here's my take on it the column type generation, which includes computed columns, UDTs and the numeric & decimal types:

    [font="Courier New"]

    SELECTQUOTENAME(c.name) + ' '

    +CASE WHEN c.is_computed = 0 THEN

    CASE t.is_user_defined WHEN 1 THEN QUOTENAME(s.name) + '.' ELSE '' END +

    QUOTENAME(t.name) +

    CASE

    WHEN t.name IN ('binary','varbinary','char','varchar')

    THEN '(' + CASE c.max_length WHEN -1 THEN 'max' ELSE CAST(c.max_length AS VARCHAR(10)) END + ')'

    WHEN t.name IN ('nchar','nvarchar')

    THEN '(' + CASE c.max_length WHEN -1 THEN 'max' ELSE CAST(c.max_length/2 AS VARCHAR(10)) END + ')'

    WHEN t.name IN('numeric','decimal')

    THEN '(' + CAST(c.[precision] AS VARCHAR(10)) + ', ' + CAST(c.[scale] AS VARCHAR(10))+ ')'

    ELSE ''

    END + CASE c.is_nullable WHEN 0 THEN ' NOT NULL' ELSE ' NULL' END

    ELSE ' AS ' + cc.[definition]

    END AS dataType

    FROMsys.columns c

    INNERJOIN sys.objects o

    ONc.[object_id] = o.[object_id]

    INNERJOIN sys.types t

    ONc.system_type_id = t.system_type_id

    ANDc.user_type_id = t.user_type_id

    LEFTJOIN sys.schemas s

    ONt.[schema_id] = s.[schema_id]

    LEFTJOIN sys.computed_columns cc

    ONc.[object_id] = cc.[object_id]

    ANDc.column_id = cc.column_id

    WHEREo.name = 'Table_1'

    ORDERBY c.column_id

    [/font]