Durch das Anwachsen des Datenbestandes konnte beim SQL-Server die Datenbanksicherung nicht mehr lokal erzeugt werden – der Festplattenplatz reichte schlicht nicht aus. Da die Sicherungen auf dem Server sowieso nur Zwischenstation machten und von dort auf ein externes Sicherungsmedium verschoben wurden, sollte die Sicherung direkt auf das Netzlaufwerk geschrieben werden. Leider ließen sich die Berechtigungen nicht so einrichten, dass das Schreiben auf das Netzlaufwerk gelang. Aber durch die Aktivierung der Kommando—Shell und einer Anpassung an dem Sicherungsskript gelang es dennoch.

 

Zunächst musste die Kommando-Shell aktiviert werden. Das gelingt mit dem folgenden Skript, geht aber sicher auch irgendwo klickenderweise:

EXEC sp_configure 'show advanced options', 1;
GO
RECONFIGURE;
GO

EXEC sp_configure 'xp_cmdshell',1
GO
RECONFIGURE
GO

 

Damit können dann Windows-Shell-Kommandos in T-SQL verwendet werden und das Netzlaufwerk kann so mit einem net use verfügbar gemacht werden. Die Sicherung kann dann direkt auf das Netzlaufwerk geschrieben werden. Aus Sicherheitsgründen sollte das Netzlaufwerk nach dem Schreiben der Sicherung wieder getrennt werden:

EXEC XP_CMDSHELL 'net use Z: \\192.168.2.1\mypath /user:domain\username pwd'

DECLARE @MyFileName varchar(1000) 
set @MyFileName = (select 'Z:\mybackup' + replace(convert(varchar(30), getdate(),23), '-','_') + '_' +  replace(convert(varchar(30), getdate(),108),':','') + '_3530000.bak')

BACKUP DATABASE [databse] TO  DISK = @MyFilename WITH init

EXEC XP_CMDSHELL 'net  use  Z:  /delete'