MS SQL 2005 - XML periodisch einlesen - wie?

Guten Tag

Eine XML Datei soll in einer entsprechenden Tabelle einer MS SQL 2005 Datenbank eingelesen werden. Die XML Datei, welche sich auf Server 1 (MS Server 2003) befindet, wird periodisch aktualisiert (ca. 175-mal in 24h). Ändert der Inhalt der XML Datei, soll die entsprechende Tabelle in der Datenbank aktualisiert werden. Die Datenbank ist auf Server 2 (MS Server 2003) installiert. Auf Server 1 darf ich leider keinerlei Änderungen tätigen.

Wie kann ich das Ereignis XML Datei geändert auf dem anderen Server 1 detektieren? Eine Möglichkeit die ich sehe ist, die entsprechende Datei periodisch zu lesen und dann mit dem in der Tabelle gespeicherten Änderungsdatum der Datei zu vergleichen, wenn ungleich dann ein UPDATE ausführen. Kennt jemand eine bessere/einfachere Möglichkeit?

Es gibt diverse Artikel im Internet, wie man mit C# .NET XML-Daten in ein ADO.NET DataSet-Objekt einliest. Geht das auch direkt mit einer Stored Procedure in MS SQL? Wenn ja, wie kann ich eine solche Prozedur periodisch ausführen lassen oder den Event „Datei geändert“ detektieren?

Vielen Dank für Eure Hilfe im Voraus!

Grüsse, Olli

Hi,
für solche Sache werden üblicherweise die SSIS (Integration Services) genommen. Dort können auch XML Daten eingelesen und konvertiert werden.

Die SSIS Packete werden über den SQLServer Agent zeitgesteuert gestartet.

Man kann es auch über die CLR (.net) Intergration machen oder ganz ausserhalb mit Software deiner Wahl.

Ob du erkennen kannst ob sich Daten geändert haben, hängt eher davon ab ob die Quelle die XML Datei immer wieder neu erzeugt - dann hast du keine Chance - oder sie nur erzeugt wenn Daten geändert worden sind.

Gruss
Joey

Hallo,

für solche Sache werden üblicherweise die SSIS (Integration
Services) genommen. Dort können auch XML Daten eingelesen und
konvertiert werden.

SSIS also. Danke für den Hinweis!

Die SSIS Packete werden über den SQLServer Agent zeitgesteuert
gestartet.

Okay, ich gehe davon aus, dass ich das z.B. alle 8 Minuten tun kann(?).

Man kann es auch über die CLR (.net) Intergration machen oder
ganz ausserhalb mit Software deiner Wahl.

Heisst, dass ich ein C# .NET Progi schreiben kann, dass die XML konvertiert und in die Tablle schreibt. Das Progi kann ich dann periodisch via SQLServer Agent ausführen. Richtig?

Grüsse, Olli

Hallo,

Die SSIS Packete werden über den SQLServer Agent zeitgesteuert
gestartet.

Okay, ich gehe davon aus, dass ich das z.B. alle 8 Minuten tun
kann(?).

ja

Heisst, dass ich ein C# .NET Progi schreiben kann, dass die
XML konvertiert und in die Tablle schreibt. Das Progi kann ich
dann periodisch via SQLServer Agent ausführen. Richtig?

oder via dem normalen Task scheduler, oder man schreibt ein Service der die Dateien analysiert und dann erst in die Tabellen schreibt, oder, oder, oder …

Hängt davon ab wie kritisch die Anwendung ist und wieviel Zeit man deshalb reinstecken kann bzw muss.

Gruss
Joey