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-ID: 1128769507

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

Ausgedruckt am: 21.11.2024 um 18:11 Uhr

wiesi200
wiesi200 06.08.2021 um 11:48:02 Uhr
Goto Top
RalfHackmann
RalfHackmann 06.08.2021 um 14:19:20 Uhr
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
wiesi200
wiesi200 06.08.2021 um 17:52:30 Uhr
Goto Top
Auch das Recht für den User zugewiesen?
GRANT exec ON xp_cmdshell TO N'<some_user>'
em-pie
em-pie 07.08.2021 um 09:51:23 Uhr
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
RalfHackmann
RalfHackmann 09.08.2021 um 09:54:19 Uhr
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