[gelöst]Batch Datei auf SQL von Clint aufrufen

14. Februar 2011 13:03

Hallo zusammen,

Ich habe ein kleines Problem:
Wir haben für diverse externe Programme Dienste auf unserem SQL Server laufen, z.B. Verbindung zur Druckersoftware (IndustrieProgramm)
Diese DIenste haben die nerfige Eigenschaft sich manchmal einfach "weg" zu hängen - was z.B. den negativen Nebeneffekt hat das die EDV also ich
und mein Kollege die einzigen sind die den Diest neu starten können.
Wenn dies jetzt aber in der Nachtschicht passiert sind wir da nun nicht wirklich begeistert zur Firma zu fahren... wie Ihr euch sicherlich vorstellen könnt.
Also habe ich nun eine "Batch.bat" Datei geschrieben um den Dienst zu beenden und neu zu starten.

Ganz einfacher Code:
Code:
@echo off
net start Druckerdienst
net Stop Druckerdienst


kenn mich da auch nicht wirklich gut aus.

Dieser Code funktioniert aber nur auf den Localen PC...
Wenn Ich Ihn z.B mit
Code:
SHELL('\\Navsql\Admin\Druckerdienst.bat');

aus NAV aufrufe..

Lösungsansatz 1:
Die Batch datei Dahingehend anpassen , dass sie direkt auf den Server zugreift - hierfür müsste aber Code geschrieben werden in dem Anmeldename und Passwort steht - da weiß ich aber nicht wie das geht- Jemand ne Idee?

Lösungsansatz 2:
Gibt es einen anderen Aufruf z.B. über Automation??

Lösungsansatz 3:
Der NAS Projektwarteschlage läuft auf den gleichen SQL Server, man könnte hier einen Report schreiben und durch Knopfduck die Projektwarteschange neu starten...

Was meint Ihr? Wo soll ich dies Problem angreifen? Oder habt Ihr noch weitere vielleicht einfachere Wege??

vielen Dank fürs Hirn-Jogging...

Gruß Matthias
Zuletzt geändert von himi81 am 21. Februar 2011 11:52, insgesamt 3-mal geändert.

Re: Batch Datei auf SQL von Clint aufrufen

14. Februar 2011 13:07

Ähm könnt ihr nicht per Fernwartung direkt auf den Server zugreifen?
Wenn ich dich richtig verstehe, stürzt nur ein Dienst ab, nicht der Server als solcher.

Re: Batch Datei auf SQL von Clint aufrufen

14. Februar 2011 13:23

Hallo ,
Klar können wir auf den Server zugreifen, von zu hause.
Aber wolltest du dich dafür wecken lassen?
Besser wenns nicht funktioniert - In NAV auf nen Knopf drücken, wenns dann funktioniert:
Können wir weiterschlafen! :-D

Gruß Matthias

Re: Batch Datei auf SQL von Clint aufrufen

14. Februar 2011 14:06

Naja, du hast doch gesagt:
himi81 hat geschrieben:Wenn dies jetzt aber in der Nachtschicht passiert sind wir da nun nicht wirklich begeistert zur Firma zu fahren...

Hier dachte ich, du hast nur von der Firma aus Zugriff.

Weiterhin:
himi81 hat geschrieben:Aber wolltest du dich dafür wecken lassen?

himi81 hat geschrieben:wenns nicht funktioniert - In NAV auf nen Knopf drücken

Musst du dich dafür nicht genauso wecken lassen?

Irgendwie ... kann ich dir nicht folgen :-)

Re: Batch Datei auf SQL von Clint aufrufen

14. Februar 2011 14:11

Entweder soll jemand aus der Nachtschicht den Dienst aus NAV wieder starten können, oder Matthias kann das schon im Schlaf :roll:

Re: Batch Datei auf SQL von Clint aufrufen

14. Februar 2011 14:27

Ich denke schon, dass wenns auf " Knopfdruck" geht, und bekannt ist das man beim Fehler "Keine Verbindung/keine Reaktion" auf besagten Knopf drücken kann
die MA der Nachtschicht wohl darauf "konditioniert" werden könnten.... :-D :lol: :lol:
Des weiteren starte ich Dieste gundsätzlich durch Handauflegen neu, aber dafür müsste ich zur Firma hinfahren...

Leider ist diese Diskussion hier grade nicht wirklich konstruktiv oder?

Naja Spaß muss sein.

Re: Batch Datei auf SQL von Clint aufrufen

14. Februar 2011 15:06

himi81 hat geschrieben:Leider ist diese Diskussion hier grade nicht wirklich konstruktiv oder?

Dass ich dir nicht folgen kann (also was ist dein eigentliches Problem) war keineswegs scherzhaft gemeint.
Suchst du nach einer Möglichkeit, ohne expliziten Remotezugriff einen Dienst auf einem anderen Rechner neu zu starten?

Re: Batch Datei auf SQL von Clint aufrufen

14. Februar 2011 15:57

Ich glaube er möchte das jemand aus den Nachtschicht eigenstädig einen Dienst per Knopfdruck auf dem Server neu startet, oder? :?:

Also ich finde es nicht gut und höchst heikel, aber wenn du das so möchtest.

mit
Code:
schtasks /create /sc once /tn "Dienst XY neu starten" /tr <Pfad><File>

kannst du auf dem Server eine TASK anlegen um deine Batch auszuführen.

Remoteaufruf per Knopfdruck über z.B. "shell"
Code:
schtasks /run /s <IP> /u <user> /p <password> /tn <Task>


Da ist dann aber Benutzer/Passwort hartcodiert hinterlegt.

Kannst du dann ruhig schlafen? :wink:

mfg,
winfy

Re: Batch Datei auf SQL von Clint aufrufen

14. Februar 2011 16:26

oder zb mit psservice.exe aus den PsTools (http://technet.microsoft.com/de-de/sysi ... s/bb896649).
psservice.exe \\servername -u Username -p Password restart Servicename

Natürlich würde sich eher ein entsprechendes Monitoring Tool wie zb Nagios, PRTG etc anbieten welches selbständig den Dienst überwacht und bei Bedarf eine Aktion unternimmt.

Re: Batch Datei auf SQL von Clint aufrufen

15. Februar 2011 09:17

Hallo zusammen,

Ich habe die gleichen Bedenken wie Ihr, deshalb hab ich ja auch geschrieben. Das Passwot Hart Codiert in eine Batch zu schreiben halte
ich auch nicht umbedingt für sinnvoll. ( Aber gut das der Code jetzt im Forum zu finden Ist , Danke dafür)
Was haltet Ihr den von der Lösung mit dem NAS?

In diesem Fall würde die kleine Batch Datei auf dem Server liegen.
Bei Versagen des Dienstes würde eine Funktion in der Projektwarteschlage aufrufen. z.B. einen Report.
Dieser Report ruft dann auf dem Server die .bat Datei auf.

Das müsste doch der sicherste Weg sein oder nicht?
Was könnte da passieren?

@Natalie:
Sorry, ich dachte ich hätte mich verständlicher ausgedrückt.
Also mein Problem ist das NAV die Daten zum Drucken an eine Abfüll-linie liefert. Hier ist natürlich jeder Stillstand teuer. Also möchten wir das es bei
Problemen eine möglichst einfache und vorallem schnelle Lösung gibt.
Wir sind in der EDV nur zu zweit, und wir können nicht gewährleisten dass immer jemand von uns erreichbar ist.
Das heisst ich möchte eine Anleitung schreiben wie sich die Schichtleiter im Notfall helfen können, nun möchte aber niemand das auf dem Server direkt Rumgefummelt wird (ist klar), ausserdem sind die Computerkenntnisse der der Schichtleiter eher beschränkt.

Gruß und nochmals Danke an Alle!

Matthias

Re: Batch Datei auf SQL von Clint aufrufen

17. Februar 2011 07:45

Hallo zusammen,

ich bin jetzt mittlerweile soweit, das der NAS die Datei ohne weiteres laufen lassen könnte, die Batch Datei läuft sauber, die Programmierung ist so sicher wie es halt bei diesm heikelen Thema geht. Passwörter usw sind nirgends "hart codiert" zugriff gilt nur diesem einen Dienst.

Aber es funktioniert nich nicht...
Hmm woran könnte es liegen? Die BATCH liegt auf einem physischen Laufwerk und wird auch so angesprochen, also nicht über netzwerkpfad.
Das einzige was mir dazu einfällt ist, wäre diese "Vertrauensfrage" beim ersten Ausführen einer unbekannten .bat Datei ? Das hier der NAS nicht mit ja bestätigt,
aber sonst ist das nicht so, auf dem Server wurde die Frage ja schon gestellt... Und müsste der NAS dann nicht auch eine Fehlermeldung bringen? Oder werden SHELL( ) Befehle vom NAS einfach ignoriert?

Wäre für Tipps dankbar...

Gruß Matthias

Re: Batch Datei auf SQL von Clint aufrufen

17. Februar 2011 14:26

Der SHELL Befehl geht mit NAS.
Er kann aber nur mit einer TEXT-Konstanten ohne Warnung genutzt werden (siehe Hilfe).

Code:
param := 'C:\MyFile.txt';
ret := SHELL(TEXT000, param); //KONSTANTE 'C:\windows\notepad.exe'


CODE
{
VAR
ret@1000 : Integer;
param@1001 : Text[30];
TEXT000@1002 : TextConst 'ENU=C:\windows\notepad.exe';
ExecName@1003 : Text[30];
BEGIN
END.
}


mfg,
winfy

Re: Batch Datei auf SQL von Clint aufrufen

17. Februar 2011 15:25

Wie wäre es ganz einfach mit Verwaltung->Dienste, Dienst auswählen, Eigenschaften, Wiederherstellen?

Volker

Re: Batch Datei auf SQL von Clint aufrufen

17. Februar 2011 15:29

vsnase hat geschrieben:Wie wäre es ganz einfach mit Verwaltung->Dienste, Dienst auswählen, Eigenschaften, Wiederherstellen?

Volker


Das will er nicht, da er dann schlafen möchte.
Einer aus der Nachtschicht soll das machen, natürlich ohne konkrete Adminrechte auf dem Server zu haben! 8-)

mfg,
winfy

Re: Batch Datei auf SQL von Clint aufrufen

17. Februar 2011 15:35

Und das will er nicht?
http://technet.microsoft.com/de-de/library/cc738230(WS.10).aspx

Volker

Re: Batch Datei auf SQL von Clint aufrufen

17. Februar 2011 15:43

Das will er wahrscheinlich schon, aber ich habe Ihn so verstanden als hängt sich sein Dienst direkt auf ohne das es einen konkreten Fehler gibt.

Diese Dienste haben die nerfige Eigenschaft sich manchmal einfach "weg" zu hängen


mfg,
winfy

Re: Batch Datei auf SQL von Clint aufrufen

17. Februar 2011 17:24

Du kommst um das Abspeichern von Benutzername und Passwort (in Tabelle, automation, codeunit) nicht drum herum, wenn der User selbst nicht die Rechte dazu hat.

Re: Batch Datei auf SQL von Clint aufrufen

18. Februar 2011 10:00

Hallo @ all!

Es geht mir hauptsächlich um die "geschwindigkeit" der Lösung.
Wenn der Dienst "stehen" bleibt muss ganz schnell Hilfe her, und wir sind ggf auch garnicht immer erreichbar.

Sollte dieser Fehler auftreten, kann er schnell mehrere tausend Euro kosten, und was meint Ihr wen der Chef dafür ins Büro holt?
Also brauchen wir eine einfache aber sauber funktionierende Lösung, auch wenn es hier um vielleicht etwas heiklere Themen geht wie
"NonKey-Usern" zu gestatten Dienste ne zu starten.

Von wegen "dann können wir weiterschlafen" War mehr so als Auflockerung zu verstehen...

Gruß Matthias

Re: Batch Datei auf SQL von Clint aufrufen

18. Februar 2011 10:27

Hast Du das (http://technet.microsoft.com/de-de/library/cc738230(WS.10).aspx) denn schon mal ausprobiert? Ich glaube schneller als Windows selbst, kannst auch Du nicht reagieren.
Steht denn was im Ereignislog?

Volker

Re: Batch Datei auf SQL von Clint aufrufen

19. Februar 2011 14:48

Also mein Vorschlag wäre dazu folgender:

1. Nicht mit dem SHELL Kommando in NAV arbeiten, sonder mit dem "Windows Script Host" als Automation; siehe http://www.msdynamics.de/viewtopic.php?t=2676
Damit sollte man die net start/stop Befehle direkt aus NAV heraus absetzen können, ohne eine externe Batch-Datei aufrufen zu müssen. D.h. der gesamte Code ist innerhalb einer NAV Funktion (inkl. Authentifizierung).
2. Wenn's net start/stop nicht tut, dann funzt es ggf. mit SC.EXE; siehe z.B. http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/sc.mspx?mfr=true

Hilft das was?

Re: Batch Datei auf SQL von Clint aufrufen

21. Februar 2011 11:51

Danke @ All ! Ohne euch hätt ich da sicherlich nicht hinbekommen, läuft stabil... und soll ja nur ne Notfalllösung sein.

Der Weg ist nun Folgender:
Eine Codeunit setzt die Projektwarteschange zurück:
Code:
IF EXISTS('\\Navsql\admin\BATCH\DienststartMarkem.bat') THEN BEGIN
 END;
IF EXISTS('\\Navsql\admin\BATCH\DienststartMarkem.bat') THEN BEGIN
  projekt.RESET;
  projekt.SETRANGE(projekt."Object ID to Run",50139);
  IF projekt.FINDFIRST THEN BEGIN
    projekt.Status := projekt.Status::Ready;
    projekt."Earliest Start Date/Time":= CURRENTDATETIME;
    projekt.MODIFY;
  END;
END ELSE BEGIN
  ERROR('Die Datei :"\\Navsql\admin\BATCH\DienststartMarkem.bat" konnte nicht gefunden werden!');
END;


In der Projektwarteschalge wird auf dem Server ein Report aufgerufen, der eine Funktion der Codeunit aufruft:
Code:
IF ISCLEAR(wsh) THEN
  CREATE(wsh);

windowmode   :=0; //bedeutet ohne cmd Fenster
waitOnReturn :=FALSE;
wsh.Run('E:\Lizenzen\Batch\DienststartMarkem.bat', windowmode, waitOnReturn);
CLEAR(wsh);


Dieser ruft dann direkt die batch Datei auf mit folgendem Code:
Code:
@echo off

net Stop "Markem-Imaje Connectivity V1.9" > nul
net Start "Markem-Imaje Connectivity V1.9" > nul

echo "%Date% %time% Dienst wurde neu gestartet" >> E:\Lizenzen\Batch\log.txt


Wenn es jemanden interessiert, könnte ich die Objekte und die .bat auch zur verfügung stellen? allerdings müsste mir dann jemand erklären wie ich sie hochladen kann.

Gruß Matthias

Re: [gelöst]Batch Datei auf SQL von Clint aufrufen

21. Februar 2011 14:37

Hallo Matthias,

Glückwunsch mich würde aber dennoch interessieren ob bei dem "aufgehängten" Dienst etwas im Fehler-Log stand?
Wenn ja wäre die Lösung von vsnase wohl die eleganteste Lösung.

Es ist Geschmackssache was Administratoren nun besser finden, aber wenn du den Vorschlag von stryk konsequent folgen möchtest, dann solltest du den Code komplett in Navision halten. Sprich nicht die Batchdatei aufrufen, sondern per wsh.run die net start/stop Befehle aufrufen.

Gruß,
winfy

Re: [gelöst]Batch Datei auf SQL von Clint aufrufen

21. Februar 2011 15:26

winfy hat geschrieben: ob bei dem "aufgehängten" Dienst etwas im Fehler-Log stand?
Wenn ja wäre die Lösung von vsnase wohl die eleganteste Lösung.


Nein steht leider nix im Fehler-Log...
Aber ich denke so als Notfalllösung sollte es so gehen, der Dienst hängt sich ja nicht jeden Tag und ständig auf.

Die .bat ist aber auch ziemlich sicher da woh sie liegt... da kommt der normaluser nicht dran an das Verzeichnis, und wenn ja steht ja nichts brisantes drin.

Gruß Matthias

Re: Batch Datei auf SQL von Clint aufrufen

21. Februar 2011 15:27

himi81 hat geschrieben:Wenn es jemanden interessiert, könnte ich die Objekte und die .bat auch zur verfügung stellen? allerdings müsste mir dann jemand erklären wie ich sie hochladen kann.

Alles in eine Zip-Datei (keine anderen Kompressionsformate!) und dann diese über "Dateianhang hochladen" auswählen.

Re: [gelöst]Batch Datei auf SQL von Clint aufrufen

22. Februar 2011 07:42

Also hier die Dateien.

Ist noch eine kleine Batchdatei bei, mit der man mehrere IP Adressen durchpingen kann.
Ist sonst ein bisschen schwer das alles auseinander zu ziehen.

Gruß Matthias
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.