I would probably just use INFORMATION_SCHEMA, this makes use of "undocumented" sprocs_-- GENERATES CREATE TABLE DDL for @mytable-- does not generate defaults or any constraintsdeclare @mytable sysnameset @mytable = '....'declare @obj_id int, @colid int, @md varchar(8000), @n sysname, @t nvarchar(4000)select @obj_id = object_id(@mytable), @colid = 1exec sp_MSget_qualified_name @obj_id, @md outputset @md = 'CREATE TABLE ' + @md + '('while @colid is not nullbegin exec sp_MSget_type @obj_id, @colid, @n output, @t output set @md = @md + ' ' + @n + ' ' + @t + ' ' select @md = @md + case isnullable when 0 then 'not null' else 'null' end from syscolumns where id = @obj_id and colid = @colid set @colid = ( select min(colid) from syscolumns where id = @obj_id and colid > @colid ) set @md = @md + case when @colid is null then ')' else ',' endendselect coalesce( @md, 'table ' + @mytable + ' does not exist' )rockmoose