Laden...

Befehl auf einer Solaris Maschine ausführen von einer SQL-Server 2012 Maschine aus?

Erstellt von RayYago vor 4 Jahren Letzter Beitrag vor 4 Jahren 1.394 Views
R
RayYago Themenstarter:in
19 Beiträge seit 2019
vor 4 Jahren
Befehl auf einer Solaris Maschine ausführen von einer SQL-Server 2012 Maschine aus?

Hallo, was ich jetzt seit einiger Zeit auf der Arbeit versuche ist, einen Befehl auf einer Solaris Maschine auszuführen.

Ich befinde mich auf einer SQL Server 2012 Maschine und möchte über ein SQL-Skript ein kleinen Befehl auf einer Solaris Maschine durchführen. Alle was ich bis jetzt gefunden habe, ist dass das nur über Drittanbieter wie Putty möglich sein soll. Gibt es vielleicht eine andere Möglichkeit? Ich möchte auf der Solaris eine Schnittstelle über ein Befehl ansprechen, damit ein anderes ERP-System weiß wann und was es jetzt machen soll. Ein extra Programm dafür zu erstellen wäre ein over kill und ist von der Zeitlichen Verzögerung nicht geeignet. Ich wollte das über ein SQL-Server Tabellen Trigger ausführen, da die Daten die das ERP System erstellen soll, Zeitlich sehr kritisch sind, kann ich nicht Zeigergesteuert arbeiten.

Oder anders gesagt, ich wüsste mir nicht anders zu helfen wenn das nicht funktioniert, da ich noch nicht so erfahren bin.

Ich danke jedem für seine Hilfe.

16.806 Beiträge seit 2008
vor 4 Jahren

Bisschen wenig Infos; aber generell würde man aus Sicherheitsgründen so eine Idee vermeiden bzw. wäre das in den meisten Fällen auch ganz einfach verboten.

Eine ERP Maschine sollte von Außen so wenig wie möglich erreichbar sein.
Was Du da konzeptionell baust ist quasi ein Scheunentor, dass eben ein solchen Zugriff öffnet.

I.d.R. würde man hier auf ein Messaging zurück greifen:

  • Ein Programm auf der ERP Maschine* (oft ERP Messaging Connector genannt) öffnet nach Aussen eine Verbindung und hört auf einen Kanal; so muss nicht von Außen eine Verbindung eröffnet werden
  • Dein Programm schreib eine Information auf diesen Kanal
  • Der Connector entnimmt die Nachricht aus dem Kanal und führt Befehle direkt auf der Maschine gegen das ERP System aus.

Der Kanal kann zum Beispiel ein einfaches Messaging System wie RabbitMQ (und die zig vergleichbaren Produkte sein), das gleichzeitig ein Lastpuffer darstellt, um das ERP System nicht unnötig.
Unbelastet hat so ein Kanal extrem gute Performance- und Latenzwerte.

*vereinfachte Darstellung: das Programm muss nicht direkt auf der Maschine sein, aber zumindest in einem sicheren Netzwerksegment, in dem sich nur der Connector und das ERP befinden.

R
RayYago Themenstarter:in
19 Beiträge seit 2019
vor 4 Jahren

So in etwa läuft das ab, ich hab die Schnittstelle zum ERP mal außen vor gelassen weil ich dachte dass eher unrelevant ist. Es gibt eine spezielle Schnittstelle von dem ERP System, die auch durch das Unternehmen bereitgestellt wurde die das ERP entwickelt hat. Diese Schnittelle kann man z.B. anstupsen und sagen "druck mir bitte den Lieferschein für diesen Vorgang". So in etwa halt.

Und ich würde diese Schnittelle gerne vom SQL Server aus anstupsen. Problem nur dass das zum einen zwei unterschiedliche VM's sind und ich mich auf einem Windows Betriebssystem befinde und die Schnittstelle nur über die VM mit dem Solaris erreichbar ist.

Ich versuche gerade über Putty eine Verbindung hinzubekommen die ich dann über die SQLCMD Funktion im SQL Server aufrufen möchte.

16.806 Beiträge seit 2008
vor 4 Jahren

Also mein Feedback ist, vor allem wenn es eher kritische Aktionen sind: lass den SQL Server als Trigger da aus dem Spiel und mach es ordentlich.
Der SQL Server hat andere Aufgaben als externe Anwendungen zu informieren....

R
RayYago Themenstarter:in
19 Beiträge seit 2019
vor 4 Jahren

Naja aber das Ding ist, es gibt keinen anderen Punkt an dem es machbar wäre ohne einen enormen Zeitaufwand zu haben. Eine externe Schnittstelle auf die ich keinen Zugriff habe, gibt nur Werte in die Datenbank ab, mehr nicht. Die Schnittstelle ist weder anders ansprechbar, noch kann sie irgendwie jemand anderen ansprechen.

Ich habe weder Zugriff auf das Fertigungsleitsystem als auch auf das ERP System. Es muss eine Schnittstelle her, die einfach ist und möglichst wenig Zeit zu bauen, in Anspruch nimmt.

Deswegen die Idee mit dem Tabellen Trigger. Jedesmal wenn ich einen neuen Datensatz bekomme (sind vielleicht 1-3 jede 5 Minuten nur), kann ich sofort und ohne Verzögerung das ERP informieren bzw. die Schnittstelle dafür, das diese jetzt etwas machen soll.

Vielleicht wäre ein Aufruf für Putty über den Trigger nicht schlecht.

P
441 Beiträge seit 2014
vor 4 Jahren

Putty ist lediglich ein Werkzeug, dass es dir erlaubt über eine SSH Verbindung eine Shell auf einem Remote PC zu öffnen.
Weder Putty, noch eine Shell via SSH ist für eine Automatisierung sonderlich geeignet.

Wenn du nicht ohne den SQL Server kannst (z.B. weil die Dateneingangsschnittstelle fest steht) und es wirklich nicht anders geht (z.B. über REST entkoppeln), solltest du trotzdem von dem ERP System aus auf ein anderes System zugreifen... und wenn nachher vom ERP System aus eine Anwendung alle 5 Minuten eine Tabelle im SQL pollt ist das immer noch besser, als vom SQL Server aus eine SSH Verbindung zum ERP aufzubauen.

Was dir klar sein muss: Du bist immer von diesen Servern abhängig, das skaliert unglaublich schlecht und du wirst diese Schnittstelle bei z.B. einem ERP Upgrade pflegen müssen.

Meine Empfehlung wäre ganz klar mit dem Hersteller des ERP Systems zu sprechen. Mit etwas Glück habt ihr einen Wartungsvertrag und man kann darüber vielleicht eine saubere Lösung implementieren.