[Gelöst] Daten von extern in den SQL - Gefährlich?

2. August 2007 09:19

Hallo ihr klugen Köpfe,

ist es "gefährlich" bzw. unvorteilhaft wenn man Daten in einer Tabelle von extern wie z.B. über C# in die Datenbank speichert, die aber später in Navision braucht.

Hintergrund. Mittels einer C# Applikation hole/bekomme ich Ortungs/Telemetrie Daten von diversen Fahrzeugen. Die Daten müssen alle x Minuten in Navision gespeichert werden. Momentan mache ich es mittels Dateiaustausch in dem ich über C# eine csv erzeuge und die dann mittels OnTimer über eine Form alle X Minuten einlese.

Besser würde ich es finden die Daten direkt von C# in den SQL zu schieben. Habe nur "Angst" das der SQL Server bzw. Navision gar nicht witzig finden wegen Indizies bzw. Schlüssel. Ist das ungefährlich oder sollte ich lieber die Finger davon lassen?

mfg

Newcomer
Zuletzt geändert von NewComer am 2. August 2007 09:50, insgesamt 1-mal geändert.

2. August 2007 09:31

Hi,

also prinzipiell funktioniert das. Navision macht ja auch nichts weiter als eine ODBC-Verbindung zum SQL-Server aufzubauen. Musst halt nur aufpassen, dass du den richtigen Mandanten triffst. Die Indizes verwaltet der SQL-Server selbstständig.

Grüße Steffen

2. August 2007 09:41

Weiterhin ist wichtig, daß nur C/SIDE kompatible Datentypen gespeichert werden.
D.h. z.B. daß In CODE Feldern (varchar) nur Großbuschstaben stehen und keine Sonderzeichen; BOOLEAN (tinyint) nur mit 0 oder 1 belegt ist; bei DATE Feldern (datetime) der Part "Zeit" mit 00:00:00 belegt ist, bei TIME (datetime) der "Datums" Part mit 01.01.1753, etc.

2. August 2007 09:50

Danke stryk,

das mit den Date/Time Feldern hätte ich garantiert verschlampt und dann mein bösens erwachen erlebt. Gut, dann werde ich mit erstmal ne TestDB erstellen und dort mein "Glück" versuchen.

Vielen Dank

3. August 2007 08:59

stryk hat geschrieben:Weiterhin ist wichtig, daß nur C/SIDE kompatible Datentypen gespeichert werden.
D.h. z.B. daß In CODE Feldern (varchar) nur Großbuschstaben stehen und keine Sonderzeichen; BOOLEAN (tinyint) nur mit 0 oder 1 belegt ist; bei DATE Feldern (datetime) der Part "Zeit" mit 00:00:00 belegt ist, bei TIME (datetime) der "Datums" Part mit 01.01.1753, etc.


VORSICHT!!!

Bei SQL-Datumsfeldern ist das folgendermaßen:

1. In NAV ein Datumsfeld - Bei SQL der Zeitwert auf 00:00:00:000
2. In NAV ein Zeitfeld - Bei SQL der Datumswert auf 01.01.1754
3. In NAV ein Ultimodatum - Bei SQL der Zeitwert auf 23:59:59:000
4. In NAV ein undefiniertes Datum (0D) - Bei SQL das Datum 01.01.1753 und Zeit 00:00:00:000

Und noch eine Ergänzung: NULL-Werte sind in Datumsfeldern nicht erlaubt!

Gruß
Tim

3. August 2007 09:54

Insgesamt würde ich empfehlen, die Daten zunächst in eine Buffer Tabelle zu schreiben und diese dann zeitgesteuert in die "echten" Tabellen zu importieren. So kannst du nach dem Import noch eine Verarbeitung und ggf. eine Korrektur der Daten vornehmen.