2009-02-09 22 views
20

Mi equipo ha reconstruido recientemente su base de datos de desarrollo SQL Server 2005 desde cero utilizando los archivos fuente TFS.¿Cómo se migran los diagramas de la base de datos de SQL Server a otra base de datos?

Después, tuvimos una buena base de datos limpia que coincidía más estrechamente con nuestros entornos de prueba y producción. Sin embargo, también perdimos los diagramas de base de datos que se habían creado a lo largo de los meses en la antigua base de datos de desarrollo.

¿Alguien sabe de una forma de exportar un diagrama de base de datos de SQL Server 2005 de una base de datos a otra que contiene las mismas tablas y objetos de esquema?

ACTUALIZACIÓN:

Tanto Valentín y respuestas de la CMS por debajo debería funcionar bien. Acepté Valentin porque era primero y ya había empezado a usarlo.

Terminé creando una tabla temporal llamada 'robsysdiagrams' y copié todos los datos en eso y usé el Microsoft SQL Server Database Publishing Wizard para ejecutar las inserciones de datos en el disco. Luego cambié el nombre de robsysdiagrams a sysdiagrams en el script y lo ejecuté en la base de datos de destino. Todo funcionó bien

Respuesta

12

Rob, hay una tabla 'sysdiagrams' que contiene las definiciones del diagrama. Intenta crear la tabla e insertar los datos de la base de datos anterior. Debería funcionar.

HTH

11

Puede script the diagrams (archive link) a un archivo .sql ...

+0

Para SQL Server 2008 existe también el [script] (http://www.conceptdevelopment.net/Database/ScriptDiagram2008/) – tsionyx

+1

@ T_12 Su enlace es ahora muertos - ¿Tienes uno que todavía funciona? – Bridge

+0

link funciona para mí –

12

Asumiendo que tienen acceso a las bases de datos dentro de una instancia de SQL Server.

Habilitar diagramas en la nueva base de datos:

En la nueva base de datos, haga clic en la carpeta "Diagramas de base de datos". Sql Server Management Studio te pedirá que hagas diagramas. Si aprueba este paso, tendrá una tabla sysdiagrams en la base de datos.

continuación, ejecutar el siguiente:

INSERT INTO newdb.dbo.sysdiagrams 
    SELECT name, principal_id,[version], [definition] 
     FROM olddb.dbo.sysdiagrams 
12

Un viejo pero elegante respuesta que encontré mientras mira a resolver el mismo problema: bcp

Para extraer:

bcp YOUR_DATABASE..sysdiagrams out YOUR_DIAGRAM_NAME.bcp -c -T -S SERVERNAME 

Para importación:

(cd to the directory the diagram is in) 
bcp YOUR_DATABASE..sysdiagrams in YOUR_DIAGRAM_NAME.bcp -c -T -S SERVERNAME 
+0

Excelente one-liner, agradable y simple. – Matt

+0

Solución brillante, +1 :) –

+0

Muy útil, muchas gracias – hitman

1

Es bastante fácil, si usted tiene un servidor vinculado o cuando usted todavía está en la misma máquina:

USE newDB; 

SET IDENTITY_INSERT sysdiagrams ON; 

INSERT INTO sysdiagrams(name,principal_id,diagram_id,version,definition) 
SELECT name,principal_id,diagram_id,version,definition 
FROM oldDB..sysdiagrams; 

SET IDENTITY_INSERT sysdiagrams OFF; 
0

Mi problema es que a veces tengo que dejar a mi base de datos y volver a crearlo. Tengo un script de generación completa que crea todo excepto los diagramas.

Mi solución consiste en copiar temporalmente el diagrama en otra base de datos, y después de mi regeneración de la base de datos, cópielo de nuevo.

Lo curioso es que NO se debe tratar de abrir el diagrama de copia, porque la otra base de datos donde se encuentra no tiene las estructuras de tabla de mi base de datos, por lo que SQL Server automáticamente al abrir borra todas las tablas en el diagrama Q:

4

creo que esta es la mejor manera:

USE DestinationDatabase 

DELETE sysDiagrams 
WHERE name IN (SELECT name 
       FROM  SourceDatabase.dbo.sysDiagrams) 

SET IDENTITY_INSERT sysDiagrams ON 

INSERT sysDiagrams 
    (name , 
     principal_id , 
     diagram_id , 
     version , 
     definition 
    ) 
    SELECT name , 
      principal_id , 
      diagram_id , 
      version , 
      definition 
    FROM SourceDatabase.dbo.sysDiagrams 

SET IDENTITY_INSERT sysDiagrams OFF 
0

Hice esto usando la función de exportación de datos de MSSMs.

  • Haga clic derecho en la base de datos.
  • Elija Tareas> Exportar datos, que inicia un asistente.
  • Configure ambas fuentes de datos. Usé SQL Server Native Client 11, pero probablemente otros funcionarán. Haga clic en Siguiente.
  • Elija Copiar datos de una o más tablas o vistas (por defecto)
  • De la lista, elija la tabla sysdiagrams.
  • Elija Editar asignaciones. Asegúrate de que la opción "Habilitar inserción de identidad" esté marcada. Golpe ok
  • Haga clic en Siguiente y luego en Finalizar para ejecutar.

Funcionó como un encanto.

0

más segura manera de hacerlo:

merge into TcsDev1..sysdiagrams as Trg 
using TcsDev2..sysdiagrams as Src 
on Trg.name = Src.Name 
when not matched by target then 
insert (name, principal_id, [version], [definition]) 
values (src.name, src.[principal_id], src.[version], src.[definition]); 
Cuestiones relacionadas