MS SQL Server - Mehrer Datenbanken zu einer fusionieren
-
Hallo Leute,
Wie der Titel schon sagt, ich habe einen MS SQL Server und dort mehrere Datenbanken.
Jede datenbank ist identisch von den Tabellen her! Also in der Datenbank Datenbank1.mdf gibt es die Tabellen, X_Index, X_System, X_Info, X_Software usw.. Das selbe gibst auch in der Datenbank2.mdf.
Mein Problem ist jetzt ich möchte z.b. Datenbank1 und Datenbank2 zusammenführen in eine Datenbank "Alles" aber ich möchte nicht das die Daten ueberschrieben werden. Sprich die IDZahl (1 bis 20 - Prim.Key) soll nicht ueberschrieben werden, sonder sozusagen umbenannt auf z.b. IDZahl_DB.
Ich hoff ich hab meine Frage gut genug geschildert.
-
Ich bilde mir ein dass die Identity-Spalten in MSSQL auch beschreibbar sind, wenn ein entsprechendes Flag gesetzt ist. Ich würde dann beide Systeme offline nehmen und bei einem System die Primärschlüsselwerte so erhöhen, dass sie sich mit dem anderen System nicht überschneiden. Dazu sollten Fremdschlüsselbeziehungen mit ON UPDATE CASCADE gesetzt sein, damit die Fremdschlüssel automatisch mit angepasst werden. Danach beide zusammenkopieren und die Sequenzen für die Primärschlüsselwertbildung der Ziel-DB anpassen.
Alternativ kann man mit Superschlüssel fahren (zwei Spalten für je eine DB zusammengesetzt als Primärschlüssel). Dann müssen aber alle Anwendungen, die diese DBs als Backend haben, nachgebaut werden.
-
Hallo,
danke schon mal für deine Antwort.
Funktioniert das auch wenn sich die Datenbanken täglich aktualisieren? Also wenn ich bei einer Datenbank händisch den Prim.Key änder, muesste ich das doch täglich tun oder? (zmd. dann wenn neue Einträge dazu kommen würden in einer Datenbank).
-
Ich glaube Du solltest eher das Design ändern als solche Hacks zu machen.
Du könntest auch eine Trigger erstellen.