# SQL Abfrage über zwei Datenbanken



## realYeti (21. Februar 2008)

Hy Leute - bin leider in SQL ned so fit, deshalb frag ich mal die Experten hier:

Ich brauche ein update einer Spalte von einer anderen Datenbank:

DB1_old - Tabelle - Feld -----> DB0 - Tabelle - Feld

Und dann bräuchte ich ne Möglichkeit ein diff zu erzeugen wenn des möglich ist, um die Felder zu selectieren die andere Einträge haben.

Datenbank ist SQLServer 2005

Danke für die Hilfe

Yeti


----------



## Sinac (21. Februar 2008)

Du kannst nicht ohne weiteres Abfragen ueber mehrere Datenbanken hinaus machen, das macht ja eigentlich auch keinen Sinn. Wenn die Daten etwas mit einander zu tun haben, gehoeren die auch in eine Datenbank. Ich denke du wirst da mit reinem SQL nicht weiter kommen, auch wenn ich nicht so der Experte mit (MS?)SQL 2005 bin.

Greetz
Sinac


----------



## jrook (21. Februar 2008)

Hallo realYeti,

Joins über mehrere Tabellen in unterschiedlichen DBs sind - so weiß ich zumindest für  Mysql - möglich. Ein entsprechender Post hier im Forum erklärt wie. Entscheidend ist, dass Du für beide DBs entsprechende Rechte hast. 

Mit hilfe eines Joins über zwei Tabellen kannst Du dann auch Dein Update machen.


```
UPDATE a join b ON a.spalte=b.spalte SET a.spalte=b.spalte
```

Je nach gewünschtem Update solltest Du das Join natürlich ändern und die SET Klausel überarbeiten. Aber prinzipiell gehts.

[EDIT]
Vielleicht noch wichtig:
Die Spalten, die Du ändern möchtest müssen nicht die Spalten sein, über die Du joinst, das können auch ganz andere sein.
[/EDIT]

Viele Grüße
jrook


----------



## realYeti (22. Februar 2008)

Ich test des mal - Danke für die Hilfe !

So long

Yeti


----------



## marbe (1. März 2008)

Hallo

im M$ SQL Server kannst Du auch über mehrere Datenbanken solche Joins machen. 
Folgende kleine Anleitung sollte helfen:

Ausgangslage SERVER A mit DB1 und SERVER B mit DB 2.


In Server A oder B einen Linked Server einrichten und einen NBei großeamen für die Verbindung vergeben. ZB SERVERB
siehe auch hier: http://www.itrain.de/knowhow/sql/transfer/linked/index.asp


In Server A dann mit einer einfachen Query prüfen ob eine Verbindung besteht


```
SELECT * FROM [SERVERB].[DB2].dbo.Tabelle WHERE 1=1
```

 Sollte das geklappt haben steht einem für UPDATE, INSERT etc nichts mehr im Weg

*Achtung*
Diese Linked Server Verbindung ist nicht immer die schnellste!


----------



## realYeti (2. März 2008)

Danke für den Tip - funktioniert beides. Bin leider etwas im Stress wegen der Prüfung, aber sobald ich durch bin, poste ich mal die gesamten SQL Befehle.

SO long

Yeti


----------

