Wer sich bei Microsoft die Windows SharePoint Services (WSS) herunterl„dt, erh„lt fr die Datenhaltung eine Microsoft Data Engine (MSDE) mitgeliefert, eigentlich ein vollwertiger SQL Server 2000, der aber zumindest um seine grafischen Administrationswerkzeuge beraubt wurde. In der gleichen Situation ist der Administrator eines Windows 2003 Small Business Server.
Wie mache ich jetzt am geschicktesten ein Backup von den SQL-Datenbanken? šber STSADM regelm„áig eine Sicherung einer Site zu machen, ist sicherlich eine Option (ich werde mich dazu demn„chst noch „uáern), aber sp„testens, wenn es mehrere Sites gibt, und vor allem nicht kontrolliert werden kann, wie und wann neue Sites angelegt werden, wird es mit einer Sicherung via STSADM schwierig.
Eine (aus Administrator-Sicht vernnftige) Variante ist die Sicherung der SQL-Datenbanken. Da mit der MSDE wenigstens das Administrationswerkzeug OSQL mitgeliefert wird, sind wir immerhin in der Lage, den SQL Server mit Befehlen zu fttern. Da bietet es sich doch an, eine Batchdatei anzufertigen, die regelm„áig eine Sicherung einer SQL-Datenbank anfertigt. Ein Batch zum Sichern kann so aussehen:
@ECHO OFF
REM ***********************************************************************************
REM
REM DBBACKUP
REM ========
REM
REM written by SPO/odi, 07/2006
REM
REM Backup the database or the transaction log of a SQL Server database using OSQL.
REM Runs also with MSDE and WMSDE.
REM
REM ***********************************************************************************
ECHO.
ECHO DBBACKUP
ECHO ——–
ECHO.
ECHO by SPO/odi, 07/2006
ECHO.
IF "%1"=="" GOTO SYNTAX
IF "%2"=="" GOTO SYNTAX
IF "%3"=="" GOTO SYNTAX
IF "%4"=="" GOTO SYNTAX
IF /I "%1"=="DB" GOTO BACKUP_DB
IF /I "%1"=="TRANS" GOTO BACKUP_TRANS
GOTO SYNTAX
:BACKUP_DB
SET DATABASE=%2
SET BACKUPPATH=%3
SET SERVER=%4
SET BACKUPFILE=%BACKUPPATH%\%DATABASE%.bak
SET BACKUPFILE=%BACKUPFILE:[=%
SET BACKUPFILE=%BACKUPFILE:]=%
IF "%SERVER%"=="" GOTO BACKUP_DB_NO_INSTANCE
OSQL -E -S %SERVER% -Q "Backup Database %DATABASE% to disk='%BACKUPFILE%' with init"
GOTO ENDE
:BACKUP_DB_NO_INSTANCE
OSQL -E -Q "Backup Database %DATABASE% to disk='%BACKUPFILE%' with init"
GOTO ENDE
:BACKUP_TRANS
SET DATABASE=%2
SET BACKUPPATH=%3
SET SERVER=%4
SET BACKUPFILE=%BACKUPPATH%\%DATABASE%.trn
SET BACKUPFILE=%BACKUPFILE:[=%
SET BACKUPFILE=%BACKUPFILE:]=%
IF "%SERVER%"=="" GOTO BACKUP_TRANS_NO_INSTANCE
OSQL -E -S %SERVER% -Q "Backup Transaction %DATABASE% to disk='%BACKUPFILE%' with init"
GOTO ENDE
:BACKUP_TRANS_NO_INSTANCE
OSQL -E -Q "Backup Transaction %DATABASE% to disk='%BACKUPFILE%' with init"
GOTO ENDE
:SYNTAX
ECHO Syntax:
ECHO.
ECHO DBBACKUP DB database backuppath servername : backup the database
ECHO.
ECHO DBBACKUP TRANS database backuppath servername : backup the transaction log
ECHO.
ECHO Example:
ECHO DBBACKUP DB master c:ackup myserversharepoint
ECHO.
ECHO Will backup the database 'master' from the SQL Server at 'myserversharepoint'
ECHO to the directory 'c:ackup'.
ECHO.
ECHO If the databasename contains special characters like '-', use brackets around the
ECHO databasename ([my-db]).
ECHO.
:ENDE
SET DATABASE=
SET BACKUPPATH=
SET BACKUPFILE=
SET SERVER=
Die Wiederherstellung muss natrlich genauso funktionieren. Eine Batchdatei fr die Wiederherstellung so gesicherter Datenbanken, kann wie folgt aussehen:
@ECHO OFF
REM ***********************************************************************************
REM
REM DBRESTORE
REM =========
REM
REM written by SPO/odi, 07/2006
REM
REM Backup the database or the transaction log of a SQL Server database using OSQL.
REM Runs also with MSDE and WMSDE.
REM
REM ***********************************************************************************
ECHO.
ECHO DBRESTORE
ECHO ———
ECHO.
ECHO by SPO/odi, 07/2006
ECHO.
IF "%1"=="" GOTO SYNTAX
IF "%2"=="" GOTO SYNTAX
IF "%2"=="" GOTO SYNTAX
SET DATABASE=%1
SET RESTOREPATH=%2
SET SERVER=%3
IF "%SERVER%"=="" SET SERVER=COMPUTERNAME
SET RESTOREFILE_DB=%RESTOREPATH%\%DATABASE%.bak
SET RESTOREFILE_TRN=%RESTOREPATH%\%DATABASE%.trn
SET RESTOREFILE_DB=%RESTOREFILE_DB:[=%
SET RESTOREFILE_DB=%RESTOREFILE_DB:]=%
SET RESTOREFILE_TRN=%RESTOREFILE_TRN:[=%
SET RESTOREFILE_TRN=%RESTOREFILE_TRN:]=%
IF EXIST %RESTOREFILE_TRN% GOTO RESTORE_WITH_TRN
ECHO Restore database %DATABASE% …
ECHO.
OSQL -E -S %SERVER% -Q "Restore Database %DATABASE% from disk='%RESTOREFILE_DB%' with recovery"
GOTO ENDE
:RESTORE_WITH_TRN
ECHO Restore database and transaction log for %DATABASE% …
ECHO.
OSQL -E -S %SERVER% -Q "Restore Database %DATABASE% from disk='%RESTOREFILE_DB%' with norecovery"
OSQL -E -S %SERVER% -Q "Restore Log %DATABASE% from disk='%RESTOREFILE_TRN%' with recovery"
GOTO ENDE
:SYNTAX
ECHO The script will look into the backuppath. If only a file named {database}.bak
ECHO is found, just the database will be restored. If also a file named
ECHO {database}.trn is found, the database and the transaction log are restored.
ECHO.
ECHO Syntax:
ECHO.
ECHO DBRESTORE database backuppath servername : restore the database
ECHO.
ECHO.
ECHO Example:
ECHO DBRESTORE master c:ackup myserversharepoint
ECHO.
ECHO Will restorethe database 'master' on the SQL Server at 'myserversharepoint'
ECHO from directory 'c:ackup'.
ECHO.
ECHO If the databasename contains special characters like '-', use brackets around the
ECHO databasename ([my-db]).
ECHO.
:ENDE
SET DATABASE=
SET RESTOREPATH=
SET RESTOREFILE_DB=
SET RESTOREFILE_TRN=
Mit Hilfe der Geplanten Tasks der Systemsteuerung kann so ein regelm„áiges Backup der Datenbank angelegt werden. Wenn z.B. auf einem Windows 2003 Small Business Server mit diesen Hilfsmitteln die SharePoint-Datenbank gesichert wird, dann kann die Sicherungsdatei mit dem normalen Datei-Backup auf ein Band geschrieben werden.