in

SharePoint Blogs

The Best Place for SharePoint-related Blogs

odi's blog

July 2006 - Posts

  • Sichern einer SharePoint Datenbank

    Wer sich bei Microsoft die Windows SharePoint Services (WSS) herunterlädt, erhält für 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 vernünftige) 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 füttern. 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:\backup myserver\sharepoint
    ECHO.
    ECHO   Will backup the database 'master' from the SQL Server at 'myserver\sharepoint'
    ECHO   to the directory 'c:\backup'.
    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 natürlich genauso funktionieren. Eine Batchdatei für 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:\backup myserver\sharepoint
    ECHO.
    ECHO   Will restorethe database 'master' on the SQL Server at 'myserver\sharepoint'
    ECHO   from directory 'c:\backup'.
    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.

     


Need SharePoint Training? Attend a SharePoint Bootcamp!

Posts (c) their respective authors. Everything else (c) 2007 SharePoint Experts