AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi SQL - Spalten -> Spalte (ohne die Spalten zukennen)
Thema durchsuchen
Ansicht
Themen-Optionen

SQL - Spalten -> Spalte (ohne die Spalten zukennen)

Ein Thema von omata · begonnen am 18. Sep 2005 · letzter Beitrag vom 18. Sep 2005
 
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#1

SQL - Spalten -> Spalte (ohne die Spalten zukennen)

  Alt 18. Sep 2005, 11:21
Datenbank: MSSQL • Version: 2k • Zugriff über: DBExpress
So, nun ist es mal soweit.

Dies ist meine erste Frage in diesem Forum, bis jetzt habe ich immer nur anderen geholfen.
Nun hoffe ich, dass ihr mir auch mal helfen könnt...

Ich möchte/muss den Inhalt einer Datenbank in eine andere (identische) Datenbank bringen.
Dabei sollen aber nur die Zeilen übertragen werden, die sich seit der letzten Aktualisierung geändert haben. Und es soll für alle Tabellen funktionieren (auch die, die es noch gar nicht gibt).
Also, wenn man mal irgendwo eine Spalte hinzufügt, dann soll das auch automatisch übertragen werden (natürlich müssen beide Datenbanken vom Aufbau her gleich sein).

So, hoffe das Problem ist soweit verständlich.

Ich habe schon einiges ausprobiert, stosse aber leider immer wieder an Grenzen.
Also, die Idee ist folgende...

Alle Tabellen, die übertragen werden sollen bekommen jeweils einen Trigger für INSERT, UPDATE, DELETE.
Dann gibt es eine Tabelle, in der die Änderungszeilen eingetragen werden. Diese Tabelle hat drei Spalten: Status (INSERT, UPDATE, DELETE), Tabellenname, Primary-Key-Inhalt (alles Textfelder)
Ein Übertragungprogramm (Delphi) soll dann die Zeilen aus dieser Tabelle an den anderen Server übertragen. Dort wird dann über ein anderes Delphiprogramm der Inhalt in der anderen Datenbank aktualisiert.

Ich habe jetzt schon eine Stored Procedure auf dem Original-DB-Server angelegt, die mir ein SQL-Statement zusammenbaut, dass nur noch den Inhalt der Primary-Key-Felder in einer Spalte zusammenbaut.
Also nochmal auf deutsch:

ich habe eine Tabelle (ID, Datum, Bezeichnung), ID und Datum sind der Primary-Key also zaubert mir meine Prozedur folgende SQL-Anweisung:
SELECT CONVERT(VARCHAR, ID) + '-' + CONVERT(VARCHAR, Datum) FROM ?tabelle? soweit so gut. Mein eigentliches Problem ist nun aber leider, dass ich in einem Trigger die Tabellen inserted und deleted auswerten muss, damit ich nur die geänderten Zeilen verarbeite.
Da ich aber mein SQL-Statement als String vorliegen habe, muss ich es mit
EXEC sp_executesql @SQLString, N'' ausführen.

Das klappt im Prinzip ja auch, nur wenn ich bei der ?tabelle? eben inserted oder deleted benutzen möchte, dann geht das nicht. Diese Tabellen sind nur im Trigger vorhanden und mein SQLString wird nun in einer anderen Session ausgeführt. Eine Bindung über sp_getbindtoken und sp_bindsession habe ich auch schon versucht. Das klappt aber nicht, weil gar keine Transaction läuft. Es ist ja nur ein Trigger.

So, hoffe es war jetzt nicht so langatmig.
Hoffe, mir kann geholfen werden. Viellicht sehe ich ja den Wald vor lauter Bäumen nicht mehr.
Bin auch offen für eine andere Lösung.

MfG
Thorsten
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:46 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz