2009-02-09 6 views
20

Mein Team hat kürzlich die SQL Server 2005-Entwicklungsdatenbank mithilfe der TFS-Quelldateien von Grund auf neu erstellt.Wie migrieren Sie SQL Server-Datenbankdiagramme in eine andere Datenbank?

Danach hatten wir eine saubere Datenbank, die besser zu unseren Test- und Produktionsumgebungen passte. Wir haben jedoch auch die Datenbankdiagramme verloren, die über die Monate in der alten Entwicklungsdatenbank erstellt wurden.

Kennt jemand eine Möglichkeit, ein SQL Server 2005-Datenbankdiagramm von einer Datenbank in eine andere zu exportieren, die dieselben Tabellen und Schemaobjekte enthält?

UPDATE:

Sowohl Valentin und Antworten des CMS unten sollte gut funktionieren. Ich akzeptierte Valentins, weil es das erste Mal war und ich es bereits benutzt hatte.

Ich habe am Ende eine temporäre Tabelle namens 'robbsysdiagrams' erstellt und alle Daten in diese kopiert und die Microsoft SQL Server Database Publishing Wizard verwendet, um die Dateneinfügungen auf die Festplatte zu schreiben. Ich habe dann im Script robsysdiagrams in sysdiagrams umbenannt und auf der Zieldatenbank ausgeführt. Alles hat gut funktioniert.

Antwort

12

Rob, Es gibt eine Tabelle 'sysdiagrams', die die Diagrammdefinitionen enthält. Versuchen Sie, die Tabelle zu erstellen und die Daten aus der alten Datenbank einzufügen. Es sollte funktionieren.

HTH

11

Sie können script the diagrams (archive link) in eine SQL-Datei ...

+0

Für SQL Server 2008 besteht auch das [script] (http://www.conceptdevelopment.net/Database/ScriptDiagram2008/) – tsionyx

+1

@ T_12 Ihr Link ist jetzt tot - Hast du einen, der noch funktioniert? – Bridge

+0

Link funktioniert für mich –

12

Sie Angenommen, haben Zugriff auf beide Datenbanken in einer SQL Server-Instanz.

aktivieren Diagramme in der neuen Datenbank:

in der neuen Datenbank klicken Sie auf den „Datenbankdiagramme“ -Ordner. Sql Server Management Studio wird Sie auffordern, Diagramme zu verknüpfen. Wenn Sie diesen Schritt bestätigen, haben Sie eine Tabelle sysdiagrams in der Datenbank.

ausführen Dann folgt vor:

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

Eine alte, aber elegante Antwort stieß ich auf, während der Suche das gleiche Problem zu lösen: bcp

zu extrahieren:

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

zu Import:

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

Ausgezeichnete One-Liner, schön und einfach. – Matt

+0

Brilliante Lösung, +1 :) –

+0

Wirklich hilfreich, vielen Dank – hitman

1

Es ist ziemlich einfach, wenn Sie einen verknüpften Server haben, oder wenn Sie nach wie vor auf der gleichen Maschine sind:

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

Mein Problem ist, dass manchmal muss ich meine Datenbank löschen und neu erstellen. Ich habe ein Skript der vollständigen Generation, das alles außer den Diagrammen erstellt.

Meine Problemumgehung ist, das Diagramm vorübergehend in eine andere Datenbank zu kopieren, und nach meiner Datenbankregeneration kopieren Sie es zurück.Die lustige Sache ist, man sollte NICHT versuchen, das Kopierdiagramm zu öffnen, da die andere Datenbank, in der es sich befindet, nicht die Tabellenstrukturen meiner Datenbank hat, so dass SQL Server beim Öffnen alle Tabellen im Diagramm automatisch löscht q-:

4

ich denke, das ist der bessere Weg:

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

Ich habe das Exportieren von Daten-Funktion des mit MSSMS.

  • Klicken Sie mit der rechten Maustaste auf die Datenbank.
  • Wählen Sie Aufgaben> Daten exportieren, wodurch ein Assistent gestartet wird.
  • Richten Sie beide Datenquellen ein. Ich habe SQL Server Native Client 11 verwendet, aber andere werden wahrscheinlich funktionieren. Weiter klicken.
  • Wählen Sie Daten aus einer oder mehreren Tabellen oder Ansichten kopieren (Standardeinstellung)
  • Wählen Sie aus der Liste die Tabelle sysdiagrams aus.
  • Wählen Sie Mappings bearbeiten. Stellen Sie sicher, dass "Identität einfügen" aktiviert ist. Hit ok.
  • Klicken Sie auf "Weiter" und dann auf "Fertig stellen".

Arbeitete wie ein Charme.

0

sichere Weg, es zu tun:

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]); 
Verwandte Themen