Zum Hauptinhalt springen

Installation

Voraussetzungen

  • Zugriff auf den SQL Server und die Datenbank DocXtractor_Control_DB
  • PowerShell auf dem Zielsystem
  • sfcontrol.exe auf dem Zielsystem (Pfad im Skript setzen)
  • Schreibrechte auf das Log-Verzeichnis
  • Berechtigung zum Ausfuehren geplanter Tasks (Windows Aufgabenplanung)

1. Datenbankobjekt anlegen

Fuehre das SQL-Skript sql/create-table.sql aus.

Dadurch werden angelegt:

  • Tabelle DocXtractor.SF_STACK_REPROCESS_LOG
  • Index IX_SF_STACK_REPROCESS_LOG_STACKID_TIME

2. Skript bereitstellen

Verwende je nach Betriebsmodell eines der beiden Skripte:

  • powershell/stackreprocessor.ps1 fuer Windows-Authentifizierung
  • powershell/stackreprocessor-sql-login.ps1 fuer festen SQL-Benutzer mit verschluesselter Passwortdatei

3. Skript konfigurieren

Passe im Skript mindestens diese Variablen an:

  • $server (SQL-Servername, z. B. VERSQL016)
  • $database (z. B. DocXtractor_Control_DB)
  • $subsystem (zustaendiges Subsystem, z. B. Testsystem)
  • $exe (vollstaendiger Pfad zu sfcontrol.exe)
  • $logRoot (Log-Verzeichnis, z. B. F:\ELOprofessional\logs\DocX)

Hinweise:

  • Das Skript schreibt taeglich eine Logdatei (sfcontrol-YYYYMMDD.log).
  • Logdateien aelter als 30 Tage werden automatisch geloescht.
  • Stacks mit bereits >= 5 Eintraegen in SF_STACK_REPROCESS_LOG werden nicht erneut verarbeitet.

Zusaetzlich fuer stackreprocessor-sql-login.ps1:

  • $dbUser auf den festen SQL-Benutzer setzen
  • $passwordFile auf den Speicherort der verschluesselten Passwortdatei setzen
  • Die Passwortdatei muss unter dem Windows-Konto erzeugt werden, das das Skript spaeter ausfuehrt

Beispiel zur einmaligen Erstellung der Passwortdatei:

$path = 'D:\DocXtractorII_50\System\conf\stackreprocessor-sql-login-db-password.txt'
Read-Host 'DB-Passwort' -AsSecureString | ConvertFrom-SecureString | Set-Content $path

Nuetzliche PowerShell-Befehle fuer die Passwortdatei:

Passwortdatei neu anlegen oder ueberschreiben:

$path = 'D:\DocXtractorII_50\System\conf\stackreprocessor-sql-login-db-password.txt'
$directory = Split-Path -Path $path -Parent
New-Item -ItemType Directory -Path $directory -Force | Out-Null
Read-Host 'DB-Passwort' -AsSecureString | ConvertFrom-SecureString | Set-Content -Path $path

Passwortdatei aktualisieren:

$path = 'D:\DocXtractorII_50\System\conf\stackreprocessor-sql-login-db-password.txt'
Read-Host 'Neues DB-Passwort' -AsSecureString | ConvertFrom-SecureString | Set-Content -Path $path

Entschluesselung unter demselben Windows-Konto testen:

$path = 'D:\DocXtractorII_50\System\conf\stackreprocessor-sql-login-db-password.txt'
$secure = Get-Content -Path $path | ConvertTo-SecureString
$credential = New-Object System.Management.Automation.PSCredential ('DocXtractor_Service', $secure)
$credential.GetNetworkCredential().Password

Hinweis:

  • Die Ausgabe des letzten Befehls ist das Klartext-Passwort und sollte nur fuer einen kurzen Funktionstest verwendet werden.
  • Die Datei kann nur von demselben Benutzerkontext auf demselben Server entschluesselt werden, wenn sie mit ConvertFrom-SecureString ohne zusaetzlichen Key erzeugt wurde.

4. Testlauf manuell ausfuehren

Starte das Skript einmal manuell auf dem Zielsystem:

powershell.exe -ExecutionPolicy Bypass -File .\stackreprocessor.ps1

Fuer die SQL-Login-Variante entsprechend:

powershell.exe -ExecutionPolicy Bypass -File .\stackreprocessor-sql-login.ps1

Pruefen:

  • Logdatei im konfigurierten $logRoot
  • Eintraege in DocXtractor.SF_STACK_REPROCESS_LOG
  • Erfolgreicher Aufruf von sfcontrol.exe

5. Windows Aufgabenplanung einrichten

Empfohlene Einstellungen:

  • Trigger: alle 10 Minuten (oder passend zu eurem Betrieb)
  • Aktion: powershell.exe
  • Argumente:
-ExecutionPolicy Bypass -File "D:\Pfad\zu\stackreprocessor.ps1"

Oder fuer die SQL-Login-Variante:

-ExecutionPolicy Bypass -File "D:\Pfad\zu\stackreprocessor-sql-login.ps1"
  • Option aktivieren: Keine neue Instanz starten, wenn die Aufgabe bereits ausgefuehrt wird
  • Aufgabe mit einem technischen Konto ausfuehren, das Zugriff auf SQL Server, sfcontrol.exe und das Log-Verzeichnis hat

Zusatz fuer stackreprocessor-sql-login.ps1:

  • Das technische Konto der Aufgabe muss identisch mit dem Konto sein, das die verschluesselte Passwortdatei erstellt hat
  • Ein reiner Dateikopiervorgang der Passwortdatei auf ein anderes Konto oder einen anderen Server reicht nicht aus

6. Betriebskontrolle

Nach der Einrichtung regelmaessig pruefen:

  • Dateilog im Log-Verzeichnis
  • DB-Log in DocXtractor.SF_STACK_REPROCESS_LOG
  • Geblockte Stacks (>= 5 Versuche) siehe docs/operations.md