none
Task Scheduler führt Skript nicht vollständig aus RRS feed

  • Frage

  • Hallo,

    ich versuche einen Task zu bauen, der regelmäßig die SQL-Datenbank auf einen anderen Server sichert.

    Dazu habe ich zuerst ein T-SQL Skript erstellt, welches das Backup erstellt. Leider scheint es nicht möglich, über dieses Skript direkt auf eine Freigabe oder ein virtuelles Laufwerk zu speichern. Lokal funktioniert es.

    Daher speichere ich es in einem Ordner C:\backup und habe ein PowerShell-Skript erstellt, welches schlicht den Inhalt des Ordners auf die Freigabe kopiert, dabei einen einzigartigen Namen erstellt und schließlich den Inhalt von C:\backup löscht. Das funktioniert wunderbar, wenn ich das Skript über PowerShell oder die CMD aufrufe. Im Task Scheduler läuft das Skript zwar durch, jedoch wird der Copy-Befehl nicht ausgeführt, es wird nur gelöscht.

    Weiß jemand, woran das liegen kann?

    Inhalt des Scripts:

    $timestamp = Get-Date -Format o | foreach {$_ -replace ":", "."}
    if($Type -eq "full"){
        $name = "Z:\SQLBackup"+$timestamp+"-full\"
    }
    elseif($Type -eq "diff"){
        $name = "Z:\SQLBackup"+$timestamp+"-diff\"
    }
    Copy-Item "C:\backup" $name -recurse
    Get-ChildItem -Path C:\backup -Include *.* -Recurse | foreach { $_.Delete()}

    Aufruf im Task Scheduler:

    Programm/Skript: PowerShell
    Parameter: -ExecutionPolicy Unrestricted -Command "& C:\Users\Ich\Skripte\DirCopy.ps1 -Type full"

    Freitag, 5. September 2014 15:42

Alle Antworten

  • Am 05.09.2014 schrieb Irolan:

    Daher speichere ich es in einem Ordner C:\backup und habe ein PowerShell-Skript erstellt, welches schlicht den Inhalt des Ordners auf die Freigabe kopiert, dabei einen einzigartigen Namen erstellt und schließlich den Inhalt von C:\backup löscht. Das funktioniert wunderbar, wenn ich das Skript über PowerShell oder die CMD aufrufe. Im Task Scheduler läuft das Skript zwar durch, jedoch wird der Copy-Befehl nicht ausgeführt, es wird nur gelöscht.

    Weiß jemand, woran das liegen kann?

    Inhalt des Scripts:

    $timestamp = Get-Date -Format o | foreach {$_ -replace ":", "."}
    if($Type -eq "full"){
        $name = "Z:\SQLBackup"+$timestamp+"-full\"
    }
    elseif($Type -eq "diff"){
        $name = "Z:\SQLBackup"+$timestamp+"-diff\"
    }
    Copy-Item "C:\backup" $name -recurse
    Get-ChildItem -Path C:\backup -Include . -Recurse | foreach { $_.Delete()}

    Gibt es das LW Z: denn auch zum Zeitpunkt des ausführens für den
    ausführenden Benutzer? Weshalb nimmst Du an der Stelle nicht einen
    UNC-Pfad? So haben wir das im Einsatz, funktioniert einwandfrei. Hat
    der ausführende Benutzer auch genügend NTFS-Berechtigungen für das
    Ziel?


    Servus
    Winfried

    Gruppenrichtlinien
    WSUS Package Publisher
    HowTos zum WSUS Package Publisher
    NNTP-Bridge für MS-Foren

    Freitag, 5. September 2014 16:50
  • *Grummel* Auf den UNC-Pfad hätt ich selber kommen können. Das funktioniert. Das virtuelle Laufwerk Z: war noch ein Überbleibsel aus dem früheren Versuch, es komplett über T-SQL zu machen. Ich hatte das einfach übernommen.

    Danke.

    Montag, 8. September 2014 08:18
  • Am 08.09.2014 schrieb Irolan:

    Grummel Auf den UNC-Pfad hätt ich selber kommen können. Das funktioniert. Das virtuelle Laufwerk Z: war noch ein Überbleibsel aus dem früheren Versuch, es komplett über T-SQL zu machen. Ich hatte das einfach übernommen.

    Hauptsache es funktioniert jetzt, und

    Danke.

    bitte, gern geschehen. ;)


    Servus
    Winfried

    Gruppenrichtlinien
    WSUS Package Publisher
    HowTos zum WSUS Package Publisher
    NNTP-Bridge für MS-Foren

    Montag, 8. September 2014 16:28