1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen
  2. Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, Oracle, Sql-Server, Postgres, Access uvm
    Information ausblenden

Vergleichen von Spalten ohne tablediff

Dieses Thema im Forum "Microsoft SQL Server" wurde erstellt von dodo-ei, 17 November 2010.

  1. dodo-ei

    dodo-ei Benutzer

    Hallo,

    ich hoffe mir kann jemand einen guten Tipp geben.

    Ich habe eine Datenbank mit ca. 30 Spalten und 8k einträgen(Zeilen). Die Tabellen haben alle eine ID Spalte. Die Datenbank wird in 2 verschiedenen Geschäftsstellen aktualisiert.
    Nun soll ich die aktualisierten Einträge auf der Hauptdatenbank aktualisieren. Ich wollte es mit tablediff vergleichen lassen und mit den
    Script aktualisieren. Leider bekomme ich immer eine Fehlermeldung (The replication table difference tool requires the comparison tables/views to have either a primary key, identity, rowguid or unique key column). Die Spalte ID ist als Primary key gesetzt. Wie kann man ohne tablediff 2 Tabellen miteinander vergleichen ?

    Ich benutze SQL Server Express 2008.
    Die Datenbanken importiere ich aus einer Access-Datenbank.
    Die Hauptdatenbank läuft auf einen SQL-Server 2008.

    Vielen Dank dodo-ei
     
  2. Charly

    Charly Datenbank-Guru

    AW: Vergleichen von Spalten ohne tablediff

    Hallo dodo-ei,

    Hier fehlen dir für sowas die tollen Tools der komerziellen Versionen.

    Sind das die Datenbänke der Geschäftsstellen oder werden die vorher aus einem SQL-Server mit Access exportiert?

    Du meinst hier auch die Express-Edition oder?

    Kannst du deinen tablediff-Aufruf online stellen?

    Sind die Tabellen-Schemata der Geschäftsstellen identisch mit denen der Hauptdatenbank?

    Überschneiden sich die ID-Spalten der zu importierenden Tabellen?

    Hast du dir auch gedanken darüber gemacht was passiert wenn von beiden GS die gleichen Datensätze bearbeitet werden?

    Sorry für die vielen Fragen. Ich muss mir erstmal ein genaueres Bild machen um dir hierbei helfen zu können.


    Gruß Charly
     
  3. dodo-ei

    dodo-ei Benutzer

    AW: Vergleichen von Spalten ohne tablediff

    Hallo Charly.

    Ich werde Dir gerne die Fragen beantworten.

    Die datensätze sind nur als Access Datenbank in den Geschäftsstellen vorhanden.
    Die Hauptdatenbank, die Online ist ist eine SQL Server 2008 - also keine Express.
    Die Schemata der Tabellen sind identisch.
    Die Datenbanken die ich aus der Access Datenbank in den SQL Server Express importiere beinhaltet die ID´s der Hauptdatenbank blos das die Hauptdatenbank noch zusätzliche ID´s mit einträgen beinhaltet.
    Es werden nur bestehende Einträge geändert die dann geupdatet werden müssen.

    Meine Tablediff Abfrage habe ich in einer batch geschrieben:

    echo on

    cd C:\Programme\Microsoft SQL Server\100\COM
    tablediff
    -sourceserver s2k3\SQLEXPRESS
    -sourcedatabase AccessImport
    -sourceschema dbo
    -sourcetable Ausstattung1
    -destinationserver S2K3\SQLEXPRESS
    -destinationdatabase destinationdatabase
    -destinationschema dbo
    -destinationtable S2K3\SQLEXPRESS
    -f c:\tablediff.sql

    pause

    Danke im vorraus, dodo-ei
     
  4. dodo-ei

    dodo-ei Benutzer

    AW: Vergleichen von Spalten ohne tablediff

    PS.

    Ich sollte vielleicht schnell erklären wieso ich in dieser Situation bin.
    Ich habe vor kurzem in einen Gemeinnützigen Verein angefangen. Derjenige der bisher die Datenbank geupdatet hat ist weg und auch nichtmehr verfügbar. Nun fummle ich schon seit Wochen hier dran rum und lese wie ein irrer SQL Bücher und Internetseiten, blos die Sache mit den Vergleichen bekomme ich einfach nicht hin.

    Gruß dodo-ei
     
  5. Charly

    Charly Datenbank-Guru

    AW: Vergleichen von Spalten ohne tablediff

    Hallo,

    nur zur Sicherheit:

    -destinationtable kann nicht S2K3\SQLEXPRESS sein.

    Hoffe dein Original-Batch hat hier sowas wie Zieltabelle stehen.

    Melde mich heute Mittag wieder. Habe gerade ziemlich viel um die Ohren.

    Gruß Charly
     
  6. dodo-ei

    dodo-ei Benutzer

    AW: Vergleichen von Spalten ohne tablediff

    Hallo,

    die destinationtable ist natürlich Austattung1, war nur ein Kopierfehler.

    Sorry
     
  7. Charly

    Charly Datenbank-Guru

    AW: Vergleichen von Spalten ohne tablediff

    Hallo dodo-ei,

    sieht eigentlich ganz gut aus dein tablediff-Aufruf. Da ich leider zur Zeit keinen Zugriff auf einen SQL-Server 2008/2005 habe um ein bischen mit tablediff rumzuspielen hast du mich auf eine Idee gebracht.

    Code:
     
    UPDATE [Tabelle1] 
    SET [Splate1] = [Tabelle2].[Splate1] 
    FROM [Tabelle1], [Tabelle2] 
    WHERE [Tabelle1].[IDX] = [Tabelle2].[IDX] 
    AND [Tabelle1].[Spalte1] <> [Tabelle2].[Spalte1];
    
    aktualisert schon mal eine Spalte einer Tabelle auf deiner Hauptdatenbank.

    Jetzt könnte man das Ganze in eine Schleife packen um alle Spalten zu vergleichen und auf der Hauptdatenbank zu aktualisieren.

    Und man könnte auch alle Tabellen der Datenbank zum aktualisieren durchlaufen (Wenn du mehr als eine Tabelle aktualisieren willst).

    Was hälst du davon?

    Um den Fehler im tablediff zu finden bräuchte ich jetzt die Create-Anweisungen der Tabellen die an dem Vergleich beteiligt sind. Manchmal ist es nur eine Kleinigkeit. Finden muss man sie trotzdem.:D

    Gruß Charly
     
  8. dodo-ei

    dodo-ei Benutzer

    AW: Vergleichen von Spalten ohne tablediff

    Rööööö

    Ja, super, danke damit weiss ich was ich lesen muss. Sorry das ich mich erst jetzt melde, aber ich hatte zuviel um die Ohren.

    Für weitere Ideen bin ich sehr dankbar.

    Gruß dodo-ei
     
Die Seite wird geladen...

Diese Seite empfehlen