Announcement

Collapse
No announcement yet.

Tabellenreihe vergleichen und kopieren

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Tabellenreihe vergleichen und kopieren

    Hallo Community,

    ich bin neu hier und habe eine Frage an euch.
    Ich habe 2 Microsoft SQl Server und möchte eine Tabelle von dem einen Server zu dem anderen kopieren.
    Es soll einmalig die Tabellenreihe "id" kopiert werden und danch sollen nur noch veränderungen bzw neu dazu gekommene ids rüberkopiert werden, es dürfen also keine Duplikate entstehen.

    Ich habe meinen linkesserver eingerichtet. der funktioniert. Ich kann auf beiden Server abfragen machen.

    Ich konnt durch :

    insert into Zielserver.dbo.test select id from quellserver.dbo.test

    die datenkopieren.

    jetzt wäre eine where Anweisung gut.

    Aber ich weiss nicht wie ich das realisieren kann.

    Kann mir jemand helfen ?

    Vielen Dank

  • #2
    Das mit den Änderungen verstehe ich jetzt mal gar nicht, was du damit meinst. Aber neue ID's sollten sich zB so einfügen lassen:

    insert into Zielserver.dbo.test select id from quellserver.dbo.test Q where not exists (select 1 from Zielserver.dbo.test Z where Z.id = Q.id)

    bye,
    Helmut

    Comment


    • #3
      Hallo Helmut,

      Super... genau so hat es funktioniert....

      funktioniert das auch so einfach wenn zum Beispiel id ein Primary key ist ?

      Habe jetzt in meiner Testdatebank Id ohne Promary Key angelegt.
      Im Produkttivsystem ist es aber eine Primary Key.

      Vielen Danke für deine Hilfe

      Comment


      • #4
        Klar funktioniert das
        Es wird ja praktisch bei jeder Zahl vor dem Kopieren geprüft, ob sie in der Zieltabelle nicht schon vorhanden ist. Und ob die Zahl jetzt einfach so ein Feld ist oder ein PK oder sonstwas ist dabei völlig egal.

        bye,
        Helmut

        Comment


        • #5
          Hallo Helmut,

          vielen dank...habe noch eine letzte Frage.. muss das ganze jetzt nochmal erweitern. ich hoffe du kanns mir nochmal so schnell helfen.


          Es gibt zum beispiel die id =1 . Die besteht aus mehreren Spalten wie zb noch typ, beschreibung und Name.

          wenn ich jetzt die id vergleich und die nicht existiert auf der Zieldatenbank, dann soll er alle Colums von der id 1 mit kopieren wie dann typ, beschreibung und Name. also quasi die komplette Zeile.

          ich habe folgendermaßen probiert.

          Die Tabelle existier auf dem Quell und auf dem zielserver mit den selben colums:
          ************************************************** ************
          insert into Zielserver.dbo.test (id, beschreibung, Name) select id, beschreibung, Name from quellserver.dbo.test Q where not exists (select 1 from Zielserver.dbo.test Z where Z.id = Q.id)

          ************************************************** ************
          ich bekomme aber die Fehlermeldung:
          Msg 7344, level 16, state 1, Linie 16
          The Ole Db provider for linked server could not insert into table because of colum n 'id'. the user did not have the permission to write to the column

          Comment


          • #6
            Hallo Helmut,

            ich bin es nochmal. ich habe in meiner Tabelle 22 Colums, und die letzte heisst jobid.
            Wenn ich diese weglassen dann funktioniert es einwandfrei wie oben geschrieben.
            die Zeilen Jobid werden dann einfach ersetzt mit 1, 2,3,4,5,6 ,7 usw.
            Wenn ich aber jobid lasse dann kommt immer oben die beschriebene Fehlermeldung.

            jobid hat folgende eigenschaften bei create: jobid, int, identity(1,1) NOT NULL


            Ich bin fast am Ziel.

            Vielen Dank

            Comment


            • #7
              noch eine letzte Frage,

              kann ich diese ganzen Abfragen auch für "views" benutzen `?

              Comment


              • #8
                Das Problem mit der Jobid kommt wahrscheinlich daher, dass diese in der Zieltabelle als Eigenschaft IDENTITY eingetragen hat. In diesem Fall kann man das zB. vorübergehend mit SET IDENTITY_INSERT ausschalten.

                Bezüglich der Verwendung in Views weiß ich jetzt nicht, was du genau damit meinst. Und daher kann ich nur sagen "hängt davon ab ...".

                bye,
                Helmut

                Comment

                Working...
                X