acabo de generar el siguiente script(con mucha imaginacion), aun falta algunos datos que pides(solo genera el script de la tabla), pero creo lo puedes complementar o mejorar (ya me dio flojera terminarlo) [espero te sirva]
Código SQL:
Ver originalCREATE PROCEDURE dbo.generaScript_sp
@tabla VARCHAR(40)
AS
DECLARE @id INT
--obtener el id de la tabla
SET @id = isnull((SELECT id FROM dbo.sysobjects WHERE id = object_id(N'[dbo].['+ @tabla +']') AND OBJECTPROPERTY(id, N'IsUserTable') = 1),0)
IF @id<>0
BEGIN
SELECT
campo
FROM (
SELECT 'create table dbo.' + @tabla + '( campo numeric(9) null' AS campo, 0 AS colorder
UNION
SELECT ', ['+CONVERT(sysname,c.name) + '] ' +
t.name + CASE t.name WHEN 'datetime' THEN ' ' ELSE '('+CONVERT(VARCHAR,CASE WHEN d.DATA_TYPE IN (6,7) THEN d.data_precision ELSE OdbcPrec(c.xtype,c.LENGTH,c.xprec) END) + ') ' END + (
CASE CONVERT(INT, ColumnProperty (c.id, c.name, 'AllowsNull')) WHEN 1 THEN 'NULL' WHEN 0 THEN '' END)+ ' Default ' + isnull(text,'NULL') AS Campo,c.colorder
FROM
sysobjects o,
master.dbo.spt_datatype_info d,
systypes t,
syscolumns c
LEFT OUTER JOIN syscomments m ON c.cdefault = m.id AND m.colid = 1
WHERE
o.id = @id
AND c.id = o.id
AND t.xtype = d.ss_dtype
AND c.LENGTH = isnull(d.fixlen, c.LENGTH)
AND (d.ODBCVer IS NULL OR d.ODBCVer = 2)
AND (o.TYPE NOT IN ('P', 'FN', 'TF', 'IF') OR (o.TYPE IN ('TF', 'IF') AND c.NUMBER = 0))
AND isnull(d.AUTO_INCREMENT,0) = isnull(ColumnProperty (c.id, c.name, 'IsIdentity'),0)
AND c.xusertype = t.xusertype
UNION
SELECT ')',9999998 AS colorder
UNION
SELECT 'alter table ' + @tabla + ' drop column [campo]',9999999 AS colorder
)B
ORDER BY colorder
END
GO
EXEC generaScript_sp 'tutabla'