Si no quiere comprar ninguna herramienta (que vale totalmente su precio, por cierto), siempre puede consultar las vistas del catálogo del sistema, y extrae la información de allí para crear scripts que puedas ejecutar en tu nueva base de datos.
En el caso de, p. las restricciones predeterminadas, esta consulta se muestra una lista de todas las restricciones predeterminadas en su base de datos:
SELECT
dc.name 'Constraint Name',
OBJECT_NAME(parent_object_id) 'Table Name',
c.name 'Column Name',
definition
FROM
sys.default_constraints dc
INNER JOIN
sys.columns c ON dc.parent_object_id = c.object_id
AND dc.parent_column_id = c.column_id
ORDER BY
OBJECT_NAME(parent_object_id), c.name
y en base a eso, usted podría, por supuesto, crear una consulta que emiten instrucciones T-SQL para recrear esas restricciones predeterminadas en el servidor de destino:
SELECT
'ALTER TABLE ' + OBJECT_SCHEMA_NAME(dc.parent_object_id) + '.' + OBJECT_NAME(dc.parent_object_id) +
' ADD CONSTRAINT ' + dc.name + ' DEFAULT(' + definition
+ ') FOR ' + c.name
FROM
sys.default_constraints dc
INNER JOIN
sys.columns c ON dc.parent_object_id = c.object_id
AND dc.parent_column_id = c.column_id
se obtendría algo como esto (para la muestra de AdventureWorks
DB):
ALTER TABLE dbo.Store ADD CONSTRAINT DF_Store_rowguid DEFAULT((newid())) FOR rowguid
ALTER TABLE dbo.Store ADD CONSTRAINT DF_Store_ModifiedDate DEFAULT((getdate())) FOR ModifiedDate
ALTER TABLE dbo.ProductPhoto ADD CONSTRAINT DF_ProductPhoto_ModifiedDate DEFAULT((getdate())) FOR ModifiedDate
ALTER TABLE dbo.ProductProductPhoto ADD CONSTRAINT DF_ProductProductPhoto_Primary DEFAULT(((0))) FOR Primary
ALTER TABLE dbo.ProductProductPhoto ADD CONSTRAINT DF_ProductProductPhoto_ModifiedDate DEFAULT((getdate())) FOR ModifiedDate
ALTER TABLE dbo.StoreContact ADD CONSTRAINT DF_StoreContact_rowguid DEFAULT((newid())) FOR rowguid
ALTER TABLE dbo.StoreContact ADD CONSTRAINT DF_StoreContact_ModifiedDate DEFAULT((getdate())) FOR ModifiedDate
ALTER TABLE dbo.Address ADD CONSTRAINT DF_Address_rowguid DEFAULT((newid())) FOR rowguid
por supuesto, usted podría t debilita la salida de T-SQL resultante a tu gusto, pero básicamente, copia & pega esos resultados de la consulta a tu nueva base de datos, y listo.
Por supuesto, hay vistas de catálogo de sistema similares para relaciones de claves foráneas (sys.foreign_keys), restricciones de comprobación (sys.check_constraints), índices (sys.indexes y sys.index_columns) y muchas más.
Es un poco de trabajo, pero se puede hacer en su propio tiempo, y aprenderá mucho sobre SQL Server en el proceso.
así que es un tradicional "hacer o comprar" decisión de nuevo :-)
Marc
He usado DbGhost durante 10 años y nunca me decepcionó, no intentaría el desarrollo de SQL a medio escala sin él. – penderi
Otra opción que he usado durante mucho tiempo es AdeptSQL Diff. No es gratis, pero compara el esquema y los datos, es muy rápido y puede generar secuencias de comandos de actualización Y EJECUTARLAS directamente desde la aplicación. Obtener sus scripts bajo control de versiones también es importante. – DarinH