# Wago 750 880 --> MS SQL Server



## saaidi (17 November 2014)

hallo,
ich muss daten von eine wago steuerung auf sql server übertragen. die daten müssen in 4 Tabellen übertragen. ich habe schon eine tabelle übertragen aber leider weiß nicht wie ich die anderen 3 tabellen gleichzeitig und ohne wiederholungen zu übertragen . Ich will nur einmal auf den sql server einloggen und die daten auf die 4 tabellen übertragen .
danke


----------



## norustnotrust (17 November 2014)

Sind das die gleichen Daten? Dann löse das doch über einen Trigger im SQL Server.


----------



## saaidi (17 November 2014)

ich bin anfänger im bereich Programmierung könnten sie mir bitte das einfacher erklären . die daten sind(tabelle1 enthält messwerte von spannungen)(tabelle 2 messwerte von Frequenz)(tabelle3 messwerte von strom)(tabelle4 messwerte von cos phi). 
danke für die schnelle antwort


----------



## saaidi (17 November 2014)

ich arbeite mid dem WagoLibMSSQL_03 und habe bis jetzt das hier programmiert (sihe Anhang)


----------



## norustnotrust (17 November 2014)

Nunja, also unsere Philosophie beim Schreiben in DBs in generell die dass nicht in die "echten" Tabellen geschrieben wird. Es wird entweder in eine Transfertabelle geschrieben (in deinem Fall eine die Spalten für Spannungen, Frequenz, Strom und cos(phi) hat) und von dort weiterverteilt, oder es wird eine Prozedur zum Einfügen verwendet. Das ist zwar nicht die Antwort auf deine Frage (wie kann ich 4 inserts konsistent und ohne reconnect in deine DB schreiben) aber in dieser Lösung hast du das Problem nicht.

Zusätzlich hast du noch die DB Struktur von deinem SPS Programm entkoppelt.


----------



## saaidi (17 November 2014)

was meinen sie mit Transfertabelle ?


----------



## RONIN (17 November 2014)

Eine Transfertabelle ist eine separate Tabelle in der man Inputs entgegen nimmt.

Zum Beispiel erzeugst du mit einem Insert-Statement Einträge in dieser Zwischen-Tabelle und lässt die Datenbank mittels Trigger (der Trigger wird für jeden neu eingefügten Eintrag abgearbeitet) dann die Daten auf die wirklichen Tabellen verteilen.

Vorteil:
A) Du hast eine klare Trennung zwischen deinen Datenquellen und deinen Daten-Tabellen
B) Du kannst auch im Nachhinein besser sehen wann, wer, welche Daten gesendet hat
    Vor allem schwierig wenn die Datenquelle irgendwelche Update-Statements ausführen muss.
In dem Fall macht die Datenquelle trotzdem nur ein Insert und der Datenbank-Trigger mach das Update-Statement
C) Du kannst im Trigger-Statement die volle Funktionalität der Datenbank nutzen
    Man kann z.B. Prüfungen über die erhaltenen Daten laufen lassen und eventuell das hier verhindern...
*XKCD: Exploits of a MOM. *

Wenn du eine Datenbank betreibst und dir jemand fremdes was reinschreiben soll, solltest du generell nur so arbeiten.


----------



## norustnotrust (18 November 2014)

2 Anregungen noch:
- in der Transfertabelle würde ich die Felder als nvarchar anlegen und erst nachher casten. Damit hat das Insert von der SPS immer hin und ich markiere in der Transfertabelle Zeilen die einen Fehler geworfen haben. (Gerade bei Real casts kann's mal passieren daß ein "10e-23" oder so rauskommt und das entdecke ich leicht in den strings)
- Wenn die Meßwerte rasch eingetragen werden mach die den Übertrag in die echten Tabellen nicht mit Triggger sondern schon mal mit einem Chronjob alle x min.


----------



## norustnotrust (19 November 2014)

Da wir stehts bemüht sind unsere Leistungen zu verbesseren bitten wir Sie um ein kurzes Feedback zu unserem Support.

Waren Sie mit unsren Antworten zufrieden?
o    Ja
o    Nein
o    lmaA


----------

