Von Haus aus ist keine Datensicherung auf ein Netzlaufwerk oder UNC-Pfad so ohne weiteres mittels Wartungsplan möglich. Gebräuchliche Varianten bestehen darin, erst lokal zu sichern und anschließend diese zu verschieben oder direkt auf den UNC-Pfad zu sichern (sofern das Dienstkonto des MS SQL Servers zuvor im Ziel entsprechend berechtigt wurde, Domänenmitgliedschaft vorausgesetzt).
Bei einem Kunden-Szenario musste aus Platzgründen auf einen Backup-Server gesichert werden, dieser ist nicht Mitglied der Domäne, folglich waren die üblichen Wege keine Option. Nach kurzer Recherche war ermittelt, wie man dennoch direkt auf ein Netzlaufwerk unter Angabe von Anmeldedaten sichern kann:
Um ein Netzlaufwerk zu verbinden wird auf xp_cmdshell zurückgegriffen, dies ermöglicht Windows-Befehle direkt aus der Datenbank-Engine heraus ausführen zu können. Per Voreinstellung ist diese Option deaktiviert. Einschalten kann man diese entweder über das Management Studio oder über eine Abfrage:
Via GUI:
- Das „MS SQL Management Server Management Studio“ starten und anmelden.
- Im Objekt Explorer den Server mit der rechten Maustaste anklicken und „Facets“ auswählen.
- „XPCmdShellEnabled“ von „False“ auf „True“ ändern und auf „OK“ klicken.
Via Abfrage:
Siehe Quellen
Netzlaufwerk verbinden (via Abfrage):
EXEC XP_CMDSHELL 'net use m: \\<HOST>\<SHARE> <PASSWORD> /User:<HOSTNAME><USERNAME> /persistent:yes'
Ein erster Test z.B. durch das Auflisten des Laufwerksinhalts:
EXEC XP_CMDSHELL 'dir m:'
Ggf. die Laufwerksbuchstaben anpassen.
Klappt der Zugriff soweit, können die Wartungspläne entsprechend angepasst werden.
Vorteil dieser Methode ist das die Datensicherung nun auf einen anderen Server der zudem in einen anderen Brandabschnitt erfolgt. Lokal wird Speicherplatz gespart. Theoretisch könnte man mittels VPN sogar direkt an einen anderen Standort sichern, dabei wäre allerdings Verbindungsstabilität, Bandbreite und die Größe der Sicherung zu beachten. Nachteil ist eine zum Zeitpunkt der Sicherung höhere Netzlast und das die Sicherung ggf. länger dauert als lokal (abhängig von der Bandbreite).
Netzlaufwerk dauerhaft (auch nach MS SQL- oder Server-Neustart) verbinden
Wird der Datenbankdienst oder gar der komplette Server neugestartet, so steht das Netzlaufwerk nicht mehr zur Verfügung. Damit die „EXEC…“-Anweisung bei jedem Start von MS SQL ausgeführt wird, muss eine automatische Ausführung einer gespeicherten Prozedur eingerichtet werden:
CREATE PROC map_drive_startup As EXEC xp_cmdshell 'EXEC XP_CMDSHELL 'net use m: \\<HOST>\<SHARE> <PASSWORD> /User:<HOSTNAME><USERNAME>'
sp_procoption @ProcName = 'map_drive_startup' , @OptionName = 'startup' , @OptionValue = 'on'
Quellen:
MS MSDN Forums – SQL Server 2012 – Cannot Use Network Drive as a Backup Device (Dienstkonto und Rechte)
DBDiggers – Enable and work with XP_CmdShell in SQL Server 2008 R2
MSSQTtips.com – Make Network Path Visible For SQL Server Backup and Restore in SSMS
Update 18.10.2017
Autoamtsiches Verbinden nach SQL Server-Neustart ergänzt.