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
Please also mark the comments that contributed to the solution of the article
Content-Key: 254555
Url: https://administrator.de/contentid/254555
Printed on: April 24, 2024 at 15:04 o'clock
6 Comments
Latest comment
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