Enno Geschrieben 12. April 2005 Teilen Geschrieben 12. April 2005 Hallo Jungs und Mädels, also ich habe eine Oracle Datenbank und eine MS-SQl Datenbank, zwischen denen ich eine Aktualisierung hibekommen muss. Ich habe mir die Möglichkeit Access mal angekuckt, komme aber nicht weiter. In beiden Datenbanken gibt es eine Tabelle mit mindestens den Feldern: Barcode Belegnummer Vorgangsnummer Kundenname Kundennummer Datum in beiden Dabas sind die Barcodes identisch (ok nicht immer. Es gibt doppelte Datensätze, oder Datensätze wo kein Barcode existiert.) Nun muss auf Knopfdruck, doer vollautomatisch (egal) in Tabelle a (MS-SQL-Server) Die Felder: Belegnummer Vorgangsnummer Kundenname Kundennummer Datum mit den Daten aus Daba b gefüllt werden. Also wenn in Daba a der Barcode 00001 existiert und die anderen Felder leer sind, dann soll er aus Daba b die zu dem Barcode entsprechenden Felder holen und eintragen. Wie kann ich das am besten machen. Vonmir aus auch nen Macro in Access oder sowas. Ist kein Thema, das ich mir beide Tabellen als externe Daten verknüpfe und das so aktualisiere. Es gibt zwar nen Toll vom Softwarehersteller, das ist aber zu unzuverlässig. Mal tuts, mal machts nur nen Teil der Daten, mal sogar alle. Und jedesmal muss man nachkontrollieren. Danke für sachdienliche Hinweise. Gruß Enno Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Honkytonk Geschrieben 12. April 2005 Teilen Geschrieben 12. April 2005 Hi! Ich weiß nicht welche Bordmittel Oracle noch bietet. Du kannst de Daten zumindest vom SQL-Server aus "ziehen". Meine Empfehlung wäre dafür DTS zu nutzen. Dort bindest du die Oracle-Seite via ODBC-Treiber einfach als Datenquelle ein. Dieses Paket kannst du dann beliebig per Job schedulen. Eine andere Möglichkeit wäre den Oracle-Server aus T-SQL mit einer Funktion oder Prozedur aufzurufen. Dies kannst du über einen Linked-Server, dessen Verbindung ständig besteht oder temporär mit OPENROWSET. Näheres beschreibt Microsoft in der MSDN hier Gruß, Honky Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Enno Geschrieben 12. April 2005 Autor Teilen Geschrieben 12. April 2005 Kann mir einer dann bei dem VB dazu helfen? WENN DTSDestination("BELEGNR") = DTSSource("Col005") DANN update DTSDestination("DATUM") = DTSSource("Col002") DTSDestination("LIEFERANTENNR") = DTSSource("Col003") DTSDestination("VORGANGSNR") = DTSSource("Col001") DTSDestination("BARCODE") = DTSSource("Col007") DTSDestination("REFERENZ") = DTSSource("Col006") Main = DTSTransformStat_OK ANSONSTEN tue nix! Danke Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Honkytonk Geschrieben 12. April 2005 Teilen Geschrieben 12. April 2005 Ähm, du kannst auch ohne VB auskommen. Probier es mal mit dem "Transforn Data Task". Noch ne die eine Frage: Gibt es in der Oracle-Quelle denn eine Spalte die kenntlich macht ob sich ein Datensatz verändert hat? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Enno Geschrieben 12. April 2005 Autor Teilen Geschrieben 12. April 2005 Gibt es in der Oracle-Quelle denn eine Spalte die kenntlich macht ob sich ein Datensatz verändert hat? Nein. Er soll immer dann die Daten eintragen, wenn die anderen Felder leer sind. ändern tut sich da nichts. das ist sichergestellt. Ist also nur sone Art Abgleich zwischen den beiden Tabellen. Und mit dem "Transform Data Task" ich steh voll auf dem Schlauch. Was meinst du? Alle Tasks -> Daten importieren -> Oracle als Source auswählen -> SQL als Ziel auswählen -> Dann Transformieren? und nu weiter. Hier kann ich nur sagen, das er alle in a enthaltenen Zeilen in b einfügen soll. Und irgendwas mit IDENTITY_INSERT nur ich blick nicht wie es funktioniert, das er nur die zeieln updaten soll, die schon in b enthalten sind, und bestimmte bedingungen erfüllen. Also Barcode vorhanden, und 3 andere Felder leer. Und dann bitte nur die Felder updaten, keinen neuen Datensatz einfügen, oder solche Spiele. Irgendwie bin ich heute grade echt der NULL Checker. Danke für die Hilfe. Gruß Enno Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Honkytonk Geschrieben 12. April 2005 Teilen Geschrieben 12. April 2005 Nein, ich meinte auch nicht den DTS Import/Export-Wizard. Direkt unter dem Baum-Punkt "Datenbanken" im Enterprise Manager findest du "Data Transformation Services". Dort gelangst du über rechte Maustaste -> "Neues Paket erstellen" in den DTS-Designer. Dort wiederum hast du dann verschiedene Objekte, die du ins Paket integrieren kannst. Wahrscheinlich brauchst du 2 Verbindungen und 1 Transformation Task. Ich schau mal ob ich noch nen Link dazu finde. [Edit] http://www.sqldts.com/ [/Edit] Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Enno Geschrieben 12. April 2005 Autor Teilen Geschrieben 12. April 2005 Das ist doch dann das gleiche, als wenn ich mit dem Wizard das Paket erstelle, und dann hinterher anschaue. Ich kann doch dann mit nem doppelklick auf die Verbindung von Quelle zu Ziel auch wieder alles ändern. Mehr möglichkeiten habe ich doch auch nciht wenn ich das direkt erstelle. Oder übersehe ich grade was. Und mit dem erstellen der eigenschaften dieser verbindung komme ich eben nicht weiter. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Honkytonk Geschrieben 12. April 2005 Teilen Geschrieben 12. April 2005 Das ist doch dann das gleiche, als wenn ich mit dem Wizard das Paket erstelle, und dann hinterher anschaue. Ich kann doch dann mit nem doppelklick auf die Verbindung von Quelle zu Ziel auch wieder alles ändern. Mehr möglichkeiten habe ich doch auch nciht wenn ich das direkt erstelle. Oder übersehe ich grade was. Und mit dem erstellen der eigenschaften dieser verbindung komme ich eben nicht weiter. Klar hat man dort mehr Möglichkeiten. Du kannst zum Beispiele mehrere Schritte planen/parallelisieren, hast Fehlerhandling etc.. Wie genau gehst du denn jetzt vor? bzw. Welche Fehlermeldung erhältst du denn? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Enno Geschrieben 13. April 2005 Autor Teilen Geschrieben 13. April 2005 Ich habs mal so versucht wie du geschrieben hast. Also Im Enterprise Manager -> DTS -> neues Paket Quelle und Ziel ausgewählt und dann hab ich schon das Problem mit den Transformationen. Jetzt will er von mir für jede Verbindung von QuellSpalte zu Zielspalte ne eigene Transformation haben. Will ich ja nicht. Er soll ja einfach kopieren, ABER eben nur, wenn die Bedingung mit dem Barcode erfüllt ist. Kannst du mir nicht son DTS paket zusammenbasteln. Nur damit ich sehe wies funktioniert, und mir dann mailen. Die kann man doch exportieren. Dann kann ichs mir mal ankucken, wie die Bedingung da eingefügt wird. Danke Gruß Enno P.S. mailaddy folgt per PN Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Enno Geschrieben 13. April 2005 Autor Teilen Geschrieben 13. April 2005 Hallo Honkytonk, ich habe mir jetzt mal kurzfristig anderweitig beholfen. Ich habe beide Tabellen in Access verknüpft und ne Aktualisierungsabfrage erstellt. Funktioniert erstmal. Chefe wollte es dringend haben. Wäre trotzdem nett wenn wir mit dem DTS Paket auf nen grünen Zweig kommen. Dann kann ich es komplett automatisieren. Immerhin dauert die aktualiesierungsabfrage auch noch ca. 30 Minuten. Sind ja nur 2,5 Millionen Datensätze ind er zu aktualisierenden Tabelle. Und die mit den Werten die eingetragen werden sollen, hat auch immerhin ca. 500.000 Datensätze. Danke und Gruß Enno Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.