MSSQL quenquery
Hallo,
ich stoße leider an die Grenzen meiner MSSQL-Kenntnisse. Ich muss diesen, eigentlich einfachen, UPDATE-Ausdruck via zwei Verbindungsserver-Verbindungen realisieren.
UPDATE lokal INNER JOIN shop ON lokal.Artikel = shop.ANR SET shop.IstESBs = lokal.IstESB
OPENQUERY(connLOKAL, 'select IstESB from lokal')
OPENQUERY(connSHOP, 'select IstESBs from shop')
Vielen Dank für eine zielführende Antwort
Peter
ich stoße leider an die Grenzen meiner MSSQL-Kenntnisse. Ich muss diesen, eigentlich einfachen, UPDATE-Ausdruck via zwei Verbindungsserver-Verbindungen realisieren.
UPDATE lokal INNER JOIN shop ON lokal.Artikel = shop.ANR SET shop.IstESBs = lokal.IstESB
OPENQUERY(connLOKAL, 'select IstESB from lokal')
OPENQUERY(connSHOP, 'select IstESBs from shop')
Vielen Dank für eine zielführende Antwort
Peter
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 254555
Url: https://administrator.de/contentid/254555
Ausgedruckt am: 13.11.2024 um 22:11 Uhr
6 Kommentare
Neuester Kommentar
Hallo Peter,
das müßte etwa so lauten:
Gruß, Mad Max
das müßte etwa so lauten:
with lokal as (select * from OPENQUERY(connLOKAL, 'select Artikel, IstESB from lokal')),
shop as (select * from OPENQUERY(connSHOP, 'select ANR, IstESBs from shop'))
update shop
set IstESBs = lokal.IstESB
from shop join lokal on lokal.Artikel = shop.ANR
Gruß, Mad Max
Hallo Peter,
gut, daß die zu aktualisierende Datenbank auch ein SQL Server ist, dann geht es nämlich einfacher und vermutlich auch schneller:
Bei <Datenbank> und <Schema> mußt Du nur noch die richtigen Werte eintragen.
Noch besser wäre es, den Verbindungsserver connLOKAL auch auf dem SQL Server mit der Tabelle "Shop" einzurichten und dann die Abfrage dort laufen zu lassen:
Wenn das direkt in der richtigen Datenbank und im richtigen Schema läuft, dann kannst Du Dir <Datenbank>.<Schema>. auch schenken.
Zu Deiner anderen Frage: grundsätzlich ja. Für Massenimporte und -exporte gibt es das Dienstprogramm bcp, ansonsten gibt es noch sqlcmd, das ist praktisch der Query Analyzer für die Kommandozeile. Wenn die Frage auf obige Problematik abzielt, dann müßtest Du aber erst mal aus MySQL exportieren und in MSSQL importieren.
Gruß, Mad Max
gut, daß die zu aktualisierende Datenbank auch ein SQL Server ist, dann geht es nämlich einfacher und vermutlich auch schneller:
update connSHOP.<Datenbank>.<Schema>.shop
set IstESBs = l.IstESB
from connSHOP.<Datenbank>.<Schema>.shop s
join OPENQUERY (connLOKAL, 'select Artikel, IstESB from lokal') l on l.Artikel = s.ANR
Noch besser wäre es, den Verbindungsserver connLOKAL auch auf dem SQL Server mit der Tabelle "Shop" einzurichten und dann die Abfrage dort laufen zu lassen:
update <Datenbank>.<Schema>.shop
set IstESBs = l.IstESB
from <Datenbank>.<Schema>.shop s
join OPENQUERY (connLOKAL, 'select Artikel, IstESB from lokal') l on l.Artikel = s.ANR
Zu Deiner anderen Frage: grundsätzlich ja. Für Massenimporte und -exporte gibt es das Dienstprogramm bcp, ansonsten gibt es noch sqlcmd, das ist praktisch der Query Analyzer für die Kommandozeile. Wenn die Frage auf obige Problematik abzielt, dann müßtest Du aber erst mal aus MySQL exportieren und in MSSQL importieren.
Gruß, Mad Max