Datenvergleich zwischen zwei Datenbanken auf unterschiedlichen MSSQL-Servern

  • VB.NET

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von rrobbyy.

    Datenvergleich zwischen zwei Datenbanken auf unterschiedlichen MSSQL-Servern

    Hallo zusammen,

    ich habe folgendes Szenario.
    MSSQL-Server1 stellt die Daten der ERP bereit
    MSSQL-Server2 stellt die Daten der Arbeitsvorbereitung (AV) bereit. (AV ist von mir in vb.net erstellt)
    In beiden System befinden sich dieselben Artikelnummern.
    Beide Systeme sind funktionsfähig.


    Jetzt möchte ich die AV so erweitern, dass ich Artikeldaten aus der ERP in meiner AV sehe. Bspw. steht in der ERP, welches Lager Artikel xy hat. Dieses Lager möchte ich in der AV mit anzeigen. Idealerweise so, dass ich eine Artikelliste in der AV habe und als Spalte das Lager der ERP sehe.

    Die Daten sollen nur lesend verwendet werden.
    Jetzt die Frage, wie ihr das machen würdet. Habe schon einige Ideen, aber irgendwie brauche ich da noch Input.

    1. Ich lasse stumpf die AV-Artikelliste mit einer SQLAbfrage gegen die ARP laufen, um mir das Lager der Artikel ausgeben zu lassen
    2. Ich übergebe die Artikelliste als eine extra Tabelle in die Datenbank der ERP und lasse von dort einen Abfrage bzw. einen SSRS-Bericht laufen. Dies hätte den Vorteil, dass der Bericht auch außerhalb der Anwendung verfügbar wäre, Aber Nachteil, wenn sich die AV-Liste bzgl. der Artikel ändert
    3. Ich ziehe mir alle Artikeldaten aus der ERP in meine AV-Datenbank. Dies müsste natürlich zyklisch gemacht werden.
    4. Ich ziehe die AV-Datenbank in die ERP-MSSQL-Instanz oder umgekehrt

    Was habt ihr denn noch für Ideen?
    Hallo,

    wie vielen Artikeldaten sind das? Oder soll nur von einem bestimmten Artikel dessen Daten angezeigt werden? Werden nur bestimmte Felder (Spalten) benötigt?

    Also ich hole mir in so einem Fall immer die Daten von der zweiten Datenbank über einen SELECT in eine DataTable. Sofern es sich nicht um so viele Datensätze handelt, dass die Performance darunter leidet. Wobei alle Datensätze lesen nicht so gut ist. Besser wäre immer nur einen bestimmten zu lesen, weil schneller.
    vielen Dank schonmal
    Du machst das also auch wie Nr 1, gut :D

    Es sind lediglich um max. 200 Artikel pro AV. Die ERP hat bis jetzt nur ca. 100.000 Artikel.
    Es werden nur 5-10 Felder benötigt. Die Performance ist hier tatsächlich nebensächlich, da es rein im internen Netz verwendet wird. Und wenn der User statt 1 Sekunde 2 oder 3 warten sollte, macht das nichts. Aber ich denke, dass wir hier unter 1 Sekunde bleiben werden.

    Ich würde dann die Abfrage auch so machen, dass ich alle Artikelnummern der AV-Liste in der Where-Klausel des selects habe, welche gegen die ERP-DB läuft.. Damit bekomme ich ja eine Datatable mit allen Artikeln inkl. den gewünschten Daten.

    Falls noch jemand ein BestPractice hat, nur immer her damit :D

    rrobbyy schrieb:

    Was habt ihr denn noch für Ideen?
    keine weiteren.
    Deine Liste der Möglichkeiten scheint mir ziemlich gut.
    Bei uns auf Arbeit wenden wir zB. 3) an. Ist ziemlich problematisch, aber glaub das sind die anderen Ansätze je auf ihre Weise ebenso.

    Datenbänkerisch optimal wäre natürlich, wenn alles eine Datenbank wäre , also 4).
    Aber ist die Frage, ob das technisch und organisatorisch möglich ist.

    Edit: Nee - bei popelige 200 Datensätze wüsste ich auch nix als 1) - "never change a running system"

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „ErfinderDesRades“ ()