ralfhackmann
Goto Top

MS SQL Server 2019 Wartungsplan Batch Datei ausführen

Hallo,

ich habe im SQL Server 2019 einen Wartungsplan erstellt, der jeden Wochentag eine eigen Vollsicherung (Montag.bak bis Freitag.bak) auf c:\backup abspeichert.

In der Folgewoche werden die Sicherungsdateien überschrieben.

Nach dem Backup möchte ich die Files z.B. mit robocopy mit einer Netzwerk Freigabe synchronisieren

Der robocopy Befehl wird über ein Batch Script ausgeführt.

Weiss jemand, wie man im SQL Server 2019 Wartungsplan dirkt nach dem Backup eine Batch Datei ausführen kann?

In der Toolbox habe ich nichts gefunden.

Gruss

Ralf
backup

Content-Key: 1128769507

Url: https://administrator.de/contentid/1128769507

Printed on: April 26, 2024 at 19:04 o'clock

Member: wiesi200
wiesi200 Aug 06, 2021 at 09:48:02 (UTC)
Goto Top
Member: RalfHackmann
RalfHackmann Aug 06, 2021 at 12:19:20 (UTC)
Goto Top
Hallo,

das xp_cmdshell wird grundsätzlich ausgeführt, jedoch copiert robocopy nicht, weil das ausführende SQL-Server Dienstkonto keinen Zugriff auf das Zielverzeichnis hat.

Dazu habe ich in Zeile 1 einen Proxy Account angelegt, der zur Überprüfung in Zeile 2 ausgegeben wird

EXEC sp_xp_cmdshell_proxy_account 'dom\user','geheim'
EXEC xp_cmdshell 'whoami.exe'
EXEC xp_cmdshell 'C:\batch\copyDB.cmd'
GO
whoami gibt jedoch immer noch das Dienstkonto aus >
nt service\mssqlserver
NULL

Und der anschliessende xp_cmdshell meldet Fehler bezüglich Zugriff verweigt.

Was mache ich noch falsch?

Gruss

Ralf
Member: wiesi200
wiesi200 Aug 06, 2021 at 15:52:30 (UTC)
Goto Top
Auch das Recht für den User zugewiesen?
GRANT exec ON xp_cmdshell TO N'<some_user>'
Member: em-pie
em-pie Aug 07, 2021 at 07:51:23 (UTC)
Goto Top
Moin,

ich habe mich mit den Wartungsplänen bisweilen noch nicht intensiv beschäftigt, aber du kannst doch (ging zumindest früher) auch Batchbefehle aufnehmen:
https://community.spiceworks.com/topic/592310-sql-08-maintenance-plans-n ...

Ggf. geht das im 2019er auch noch/ weider!?

Gruß
em-pie
Member: RalfHackmann
RalfHackmann Aug 09, 2021 at 07:54:19 (UTC)
Goto Top
Ich habe dem Benutzer dom\user das Recht für xp_cmdshell zugewiesen
( Die Syntax GRANT exec ON xp_cmdshell TO N'dom\user' wurde als fehlerhaft ausgegeben )

EXEC sp_xp_cmdshell_proxy_account 'dom\user','geheim'
GRANT exec ON xp_cmdshell TO [dom\user];
EXEC xp_cmdshell 'whoami.exe'
EXEC xp_cmdshell 'C:\batch\copyDB.cmd'
GO

Ich bekam folgenden Output:
nt service\mssqlserver
NULL

NULL
C:\Windows\system32>robocopy c:\Backup \\BAY1\Backup\Bay2DB /MIR
NULL
ROBOCOPY :: Robustes Dateikopieren für Windows
NULL
Gestartet: Montag, 9. August 2021 09:39:49
2021/08/09 09:39:49 FEHLER 5 (0x00000005) Dateisystemtyp des Zieles wird ermittelt \\BAY1\Backup\Bay2DB\
Zugriff verweigert
NULL
Quelle : c:\Backup\
Ziel = \\BAY1\Backup\Bay2DB\
NULL
Dateien : *.*

Der Benutzer dom\user hat Schreibrechte auf \\BAY1\Backup\Bay2DB\

Mich wundert es, dass der Befehl
EXEC sp_xp_cmdshell_proxy_account 'dom\user','geheim'
als Ergebnis
nt service\mssqlserver
ausgibt.

Heist das robocopy wird als Benutzer nt service\mssqlserver ausgeführt, der keine Rechte auf die Freigabe hat?

Irgendwie komm ich nicht weiter.

Gruss

Ralf