AW: Backup auf Netzlaufwerk
Hallo Christian
Das geht so nicht. Der SQL-Server arbeitet mit UNC-Pfaden und dann geht es.
Ich habe für unsere Sicherung der Datenbank folgende 2 Dateien geschrieben und kann so innerhalb der Express-Edition (SQL2008R2) alle paar Minuten sichern.
Wenn das alles nicht reicht oder zu kompliziert ist, dann schau mal hier:
http://www.http://sqlbackupandftp.com/
1. ------ Batchfile --------------------------------------------------------------------------------------------------
@echo off
:: 1. Durchlauf - es wird die Datenbank, Transaktionslog und Meldung der Sicherung gesichert
:: 2. Durchlauf - 1. Durchlauf wird umbenannt und neue Dateien s.o. gesichert
:: n. Durchlauf - 1. Durchlauf wird gelöscht - 2. Durchlauf wird umbenannt - neue Daten geschrieben
::
:: Dieses Batch in die Aufgabenplanung des Computers einbinden.
:: Bsp. Windows 7 - Computerverwaltung - Aufgabenplanung
::
::
:: Ziellaufwerk muß auch im SQL-Script geändert werden !!!
::
:: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
:: alles was in der Zeile beginnend mit set nach dem = steht, kann geändert werden
:: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
:: ---- hier soll alles stehen
:: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
set ziel_lw=\\backup
set ziel_verz=%ziel_lw%\Backup\data
set usb_lw=z:
:: ---- diese Daten werden kopiert / gelöscht
:: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
set db_alt=jtlwawi_alt.bak
set translog_alt=jtlwawi_log_alt.bak
:: ---- so heißt die SQL-Instanz
:: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
set instanz=.\JTLWAWI
:: ---- hier steht das SQL-Statement
:: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
set sql_quelle=C:\Backup
set sql__datei=eazybusiness_sichern.sql
:: ---- hierher wird die Meldung des Statements geschrieben
:: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
set sql_arc=%ziel_lw%\Backup\Protokolle
set sql_msg=LogBackup.txt
:: ---- diese Daten werden im SQL statement festgelegt
:: ---- Namen ggf, dort ändern und hierübernehmen
:: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
set db_neu=jtlwawi.bak
set translog_neu=jtlwawi_log.bak
:: **********************************************************
:: ab hier nichts mehr ändern !
:: **********************************************************
echo ... Speicherorte einstellen
if not exist %ziel_lw%\*.* set ziel_lw=%usb_lw%
if NOT exist %ziel_verz% md %ziel_verz%
if NOT exist %sql_arc% md %sql_arc%
%ziel_lw%
cd %ziel_verz%
echo ... umbenennen alter Sicherungen
if exist %db_alt% del %db_alt%
if exist %db_neu% ren %db_neu% %db_alt%
if exist %translog_alt% del %translog_alt%
if exist %translog_neu% ren %translog_neu% %translog_alt%
echo ... sichere Datenbank
echo ... Fenster schlieszt sich, wenn fertig
:: ~~~~~~ Ausführen des Backups der eazybusiness-Datenbank
SQLCMD.EXE -S %instanz% -E -i %sql_quelle%\%sql__datei% -o %ziel_verz%%sql_msg%
:: ~~~~~~~~~~~~~~~~~~ Zeitstempel erzeugen - nicht ändern ~~~~
set jahr=%date:~6,4%
set monat=%date:~3,2%
set tag=%date:~0,2%
set std=%time:~0,2%
set min=%time:~3,2%
if "%time:~0,1%" == " " set std=0%time:~1,1%
:: ~~~~~~~~~~~~~~~~~ Datei mit Zeitstempel umbenennen
:: echo ... schreibe message %sql_arc%\%jahr%%monat%%tag%-%std%%min%__%sql_msg%
move %ziel_verz%%sql_msg% %sql_arc%\%jahr%%monat%%tag%-%std%%min%__%sql_msg%
exit
2. ------- SQL - Datei -----------------------------------------------------------------------
/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
die folgenden 5 Zeilen nach den = anpassen
einfache Anführungsstriche beachten
Zeile mit dem Semikolon ; beenden
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
declare @db_name as varchar(12) = 'eazybusiness';
declare @db_backup_ziel as varchar(100) = '\\backup\backup\data\jtlwawi.bak';
declare @db_backup_name as varchar(100) = 'eazybusiness-Vollständig Datenbank Sichern';
declare @log_backup_ziel as varchar(100)= '\\backup\backup\data\jtlwawi_log.bak';
declare @log_backup_name as varchar(100)= 'eazybusiness-Vollständig
LOG Sichern';
/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ab hier nichts mehr ändern
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
USE [master]
-- Optionen - Wiederherstellungsmodell - vollständig
EXEC ('ALTER DATABASE [' + @db_name + '] SET RECOVERY FULL WITH NO_WAIT');
-- Sichern der Datenbank
EXEC ('BACKUP DATABASE [' + @db_name + '] TO DISK = ''' + @db_backup_ziel + ''' WITH NOFORMAT, INIT, NAME = '''+@db_backup_name+'''');
-- Sichern Transaktionslog
EXEC ('BACKUP LOG [' + @db_name + '] TO DISK = ''' + @log_backup_ziel + ''' WITH NOFORMAT, INIT, NAME = '''+@log_backup_name+'''');
-- Sicherung überprüfen
declare @backupSetId as int;
declare @fehler as varchar(100) = 'Fehler beim Überprüfen. Sicherungsinformationen für die Datenbank wurden nicht gefunden.';
select @backupSetId = position
from msdb..backupset
where database_name=@db_name
and backup_set_id=(
select max(backup_set_id)
from msdb..backupset
where database_name=@db_name )
if @backupSetId is null
begin
raiserror(@fehler, 16, 1)
end;
RESTORE VERIFYONLY FROM DISK = @db_backup_ziel WITH FILE = @backupSetId;
GO
-- -------------------------------
-- das war es
-- -------------------------------
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Wenn das alles nicht reicht oder zu kompliziert ist, dann schau mal hier:
Free SQL backup software for MS SQL Server 2008, 2012 and 2005 (Express) databases - SQLBackupFTP
Viel Spaß und SUUUUUUUUUUUUUUUUUUper Geschäfte