Auftrag soll über Batch-Datei fernes Objekt aufrufen

24/04/2009 - 18:21 von Jens Ottersberg | Report spam
Moin zusammen,

bislang lief bei uns ein Auftrag auf dem SQL-Server 2005 ab, welcher im
ersten Schritt eine Batch-Datei aufruft per CmdExec. Die Batch-Datei
wiederum startet ein Programm welches lokal lag und dann Daten generierte,
die in den weiteren Schritten des Auftrags abgearbeitet werden. Das
Programm weiß über eine ini-Datei wo es die Daten ablegen soll. Zum Aufruf
des Programms muss man einen Parameter übergeben und es muss von dem
Verzeichnis aus aufgerufen werden, in dem das Programm liegt.
Das Problem ist nun, dass das Programm wenn es lokal liegt nicht
aktualisiert wird. Nur die Version auf dem Server des Programmherstellers
ist aktuell. Dadurch kam es zu Fehlern in den Daten. Die Batch-Datei wurde
nun so umgestellt, dass das Programm-Objekt des Servers verwendet wird,
aber eigentlich auf dem SQL-Server ablàuft und dort die Daten generiert.
Starte ich die Batch-Datei manuell funktioniert das auch. Wird die
Batch-Datei über den Auftrag gestartet kommt die Meldung "Zugriff
verweigert".

Um das ganze mit einem Beispiel zu sagen:
SQL-Server:
Name: sql
Programmverzeichnis: C:\Programme\Ermittlung\ermittlung.bat
Freigabe: ermittlung$ mit voller Berechtigung für lokale Admins und System

Inhalt Batch-Datei:
C:\
cd C:\Programme\Ermittlung
\\daten\ermittlung$\ermittlung.exe parameter
(Die ersten zwei Zeilen resultieren noch aus der Zeit, wo das lokal
ausgeführt wurde. Vielleicht werden die schon gar nicht mehr benötigt.)


Daten-Server:
Name: daten
Programmverzeichnis: C:\Programme\Ermittlung\ermittlung.exe
Freigabe: ermittlung$ gemappt auf sql mit lokalem Benutzer von daten

Inhalt Ini-Datei:
Speicherort= \\sql\ermittlung$\daten.txt

Es wird also das Objekt ermittlung.exe vom Server daten auf dem Server sql
aufgerufen und làuft dort ab. Durch die Ini-Datei auf Server daten werden
die Daten in die daten.txt geschrieben.


Ich hoffe jemand hat mein Problem verstanden und kann mir helfen.
 

Lesen sie die antworten

#1 Klaus Last
27/04/2009 - 09:34 | Warnen spam
Hallo Jens,

prüf mal bitte ob Dein SQL-Agent-Dienst mit dem richtigen Konto làuft. Es
darf nicht lokales System sein, wenn
er außerhalb der eigenen 4 Wànde etwas machen will. Dafür benötigst Du dann
ein Konto, das auch in der
Netzwerkumgebung aktiv sein darf. Evtl. DomànenAdmin etc.

Richte Dir mal ein Konto ein, das innerhalb Deines Netzwerks und auch auf
dem eigenem Server agieren darf.
ich verwende hier immer extra Konten, die je nach benötigten Rechten lokal
Administratoren sind und in der
Domàne dann Benutzer mit den entsprechenden Rechten und freigaben.

Gruß Klaus


"Jens Ottersberg" schrieb im Newsbeitrag
news:
Moin zusammen,

bislang lief bei uns ein Auftrag auf dem SQL-Server 2005 ab, welcher im
ersten Schritt eine Batch-Datei aufruft per CmdExec. Die Batch-Datei
wiederum startet ein Programm welches lokal lag und dann Daten generierte,
die in den weiteren Schritten des Auftrags abgearbeitet werden. Das
Programm weiß über eine ini-Datei wo es die Daten ablegen soll. Zum Aufruf
des Programms muss man einen Parameter übergeben und es muss von dem
Verzeichnis aus aufgerufen werden, in dem das Programm liegt.
Das Problem ist nun, dass das Programm wenn es lokal liegt nicht
aktualisiert wird. Nur die Version auf dem Server des Programmherstellers
ist aktuell. Dadurch kam es zu Fehlern in den Daten. Die Batch-Datei wurde
nun so umgestellt, dass das Programm-Objekt des Servers verwendet wird,
aber eigentlich auf dem SQL-Server ablàuft und dort die Daten generiert.
Starte ich die Batch-Datei manuell funktioniert das auch. Wird die
Batch-Datei über den Auftrag gestartet kommt die Meldung "Zugriff
verweigert".

Um das ganze mit einem Beispiel zu sagen:
SQL-Server:
Name: sql
Programmverzeichnis: C:\Programme\Ermittlung\ermittlung.bat
Freigabe: ermittlung$ mit voller Berechtigung für lokale Admins und System

Inhalt Batch-Datei:
C:\
cd C:\Programme\Ermittlung
\\daten\ermittlung$\ermittlung.exe parameter
(Die ersten zwei Zeilen resultieren noch aus der Zeit, wo das lokal
ausgeführt wurde. Vielleicht werden die schon gar nicht mehr benötigt.)


Daten-Server:
Name: daten
Programmverzeichnis: C:\Programme\Ermittlung\ermittlung.exe
Freigabe: ermittlung$ gemappt auf sql mit lokalem Benutzer von daten

Inhalt Ini-Datei:
Speicherort= \\sql\ermittlung$\daten.txt

Es wird also das Objekt ermittlung.exe vom Server daten auf dem Server sql
aufgerufen und làuft dort ab. Durch die Ini-Datei auf Server daten werden
die Daten in die daten.txt geschrieben.


Ich hoffe jemand hat mein Problem verstanden und kann mir helfen.

Ähnliche fragen