verwendetes Datenbanksystem: <MS SQL>
Hallo!
Ich habe eine SQL-Server Instanz (befindet sich auf dem Server) in der sich eine Datenbank-1 befindet, in der sich wiederum eine Tabelle-1 befindet. Dann habe ich eine SQL-Server Instanz (lokal auf meinem Client) in der sich eine Datenbank-2 befindet, in der sich wiederum eine Tabelle-2 befindet. Die Tabellen haben eine unterschiedlich Anzahl von Spalten.
Wäre es möglich nur bestimmte Spalten aus DB1/Tabelle1 nach DB2/Tabelle2 zu kopieren, ohne dass ich erst Tabelle 1 sichern muss, um sie dann komplett in meiner DB2 wiederherzustellen und um dann aus der Tabelle1 in meine Tabelle2 kopieren?
Danke schonmal für eure Antworten!
Gruß Trekki
Wie Du prinzipiell Spalten von einer Tabelle in die andere überträgst, weißt Du wahrscheinlich:
INSERT INTO Tabelle2 (Spalte2) SELECT Spalte1 FROM Tabelle1
Wenn die Tabellen in verschiedenen Datenbanken liegen braucht man noch DB-Name und Schema:
INSERT INTO DB2.dbo.Tabelle2 (Spalte2) SELECT Spalte1 FROM DB1.dbo.Tabelle1
...und wenn die Datenbanken auch noch auf verschiedenen Servern liegen, dann braucht man auch noch den Servernamen:
INSERT INTO Server2.DB2.dbo.Tabelle2 (Spalte2) SELECT Spalte1 FROM Server1.DB1.dbo.Tabelle1
Damit das serverübergreifend funktioniert, mußt Du aber auf dem einen Server den anderen als **Verbindungsserver **definieren (per SQL oder im Management Studio).
Wenn Du die Abfrage direkt auf der einen DB ausführst, dann kannst Du natürlich für die das "Rechnername.DbName.dbo." weglassen.
Danke haarrrgh für deine schnelle Antwort!
Wollte jetzt nach deinem Schema vorgehen. Jedoch findet er die Servernamen nicht, besser gesagt er unterstreicht sie rot.
Meine Instanz 1 heißt MW-PC\SQLEXPRESS.
Muss ich das in Anführungszeichen setzen?
Der Bindestrich im Namen Deines Servers ist ein reserviertes Zeichen, deshalb mußt Du den ganzen Servernamen schonmal in eckige Klammern [ ] setzen.
Aber bei Instanzen bin ich mir nicht so sicher, habe hier keine im Einsatz.
Ich vermute daß da auch einfach die eckigen Klammern reichen, aber ich kann es hier nicht ausprobieren.