Backup av Lync 2013 Server (SQL Express) med Powershell

Jag fick i veckan ett par länkar av en kollega som handlar om att ta backup på MS SQL Express edition som inte innehåller sql-agent. Smidigt att ha till hands för att ta backup av Persistent Chat m.m i lync om det snurrar på en expressvariant av SQL.

Jag har tre SQL-intanser för Lync.
LyncLocal
RTC
RTCLocal

Har valt att schemalägga ett jobb för varje instans.
Nedan finner ni scriptet för instansen RTC. Ni har tre variabler ni kan redigera efter eget önskemål. Sen skapar ni bara ett schedule task som körs på önskade tider.

# Originalscript av Thomas LaRock, http://thomaslarock.com
# Modiferat av Qraze, https://www.qraze.se
# Kör ett script / instans i Lync. RTC, LyncLocal och RTCLocal
# Skapat: 2013-11-15

# Instans som ska backas.
$inst = "RTC"
# Server som instansen är installerad på. OBS! Krävs även om backup görs lokalt på samma maskin.
$server = "Lync01"
# Sökväg till backupfilerna
$dest = "E:\backup\files\"

$v = [System.Reflection.Assembly]::LoadWithPartialName( 'Microsoft.SqlServer.SMO')
if ((($v.FullName.Split(','))[1].Split('='))[1].Split('.')[0] -ne '9') {
    [System.Reflection.Assembly]::LoadWithPartialName('Microsoft.SqlServer.SMOExtended') | out-null
    [System.Reflection.Assembly]::LoadWithPartialName('Microsoft.SqlServer.SQLWMIManagement') | out-null
    }

Function Error_Handler {
    Write-Host "Error Category: " + $error[0].CategoryInfo.Category
    Write-Host " Error Object: " + $error[0].TargetObject
    Write-Host " Error Message: " + $error[0].Exception.Message
    Write-Host " Error Message: " + $error[0].FullyQualifiedErrorId
    }

Trap {
    # Handle the error
    Error_Handler;
    # End the script.
    break
    }

$srv = new-object ('Microsoft.SqlServer.Management.Smo.Server') $inst

If ($dest -eq "")
    { $dest = $inst.Settings.BackupDirectory + "\" };
    Write-Output ("Started at: " + (Get-Date -format yyyy-MM-dd-HH:mm:ss));
    cd SQLSERVER:\SQL\$server\$inst\Databases

    #start full backups
    foreach($database in (Get-ChildItem -Force)) {
        $dbName = $database.Name
        if ($dbName -ne "tempdb") {
            $timestamp = Get-Date -Format MMddyy
            $bakFile = $dest + $dbName + "_full_" + $timestamp + ".bak"
            Backup-SqlDatabase -Database $dbName -Initialize -BackupFile $bakFile
        }
    }
Write-Output ("Finished at: " + (Get-Date -format yyyy-MM-dd-HH:mm:ss));

Källa: http://thomaslarock.com/2012/07/automate-sql-server-express-backups-with-powershell/

Kommentera

Denna webbplats använder Akismet för att minska skräppost. Lär dig hur din kommentardata bearbetas.