Vergleichen von Spalten ohne tablediff

dodo-ei

Benutzer
Beiträge
5
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
 
Werbung:
AW: Vergleichen von Spalten ohne tablediff

Hallo dodo-ei,

Ich benutze SQL Server Express 2008.
Hier fehlen dir für sowas die tollen Tools der komerziellen Versionen.

Die Datenbanken importiere ich aus einer Access-Datenbank.
Sind das die Datenbänke der Geschäftsstellen oder werden die vorher aus einem SQL-Server mit Access exportiert?

Die Hauptdatenbank läuft auf einen SQL-Server 2008.
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
 
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
 
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
 
AW: Vergleichen von Spalten ohne tablediff

Hallo,

nur zur Sicherheit:

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

-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
 
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
 
Werbung:
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
 
Zurück
Oben