Backup SQL Server With Powershell

If you are working with Microsoft SQL Server, you may find yourself needing some sort of non-traditional backup. If that is the case you have come to the right place. Below we will detail how to backup SQL Server databases using a Powershell script. Note, this script can be extended to add email functionality by following our article Send Email With Powershell 2.

####################################################################
# SqlBackup.ps1
# Author: Matthew Marable
# Updated: January 08, 2013
# Description:
# Back up the SQL Server Databases
####################################################################

$assemblylist =
"Microsoft.SqlServer.ConnectionInfo",
"Microsoft.SqlServer.Management.Sdk.Sfc",
"Microsoft.SqlServer.SMO",
"Microsoft.SqlServer.SMOExtended"

foreach ($asm in $assemblylist)
{
    [void][Reflection.Assembly]::LoadWithPartialName($asm)
}

# Set server connection info
$conn = New-Object "Microsoft.SqlServer.Management.Common.ServerConnection"
$conn.ServerInstance = "(local)"
$conn.LoginSecure = $true
# Set LoginSecure = $false and uncomment below to use sql auth
# $conn.Login = "sql_user"
# $conn.Password = "sql_pass"

# Connect to server
$srv = New-Object "Microsoft.SqlServer.Management.Smo.Server" $conn 

# Set databases to backup
$dbnames = @("PROD","DEVEL","EXPENSE")         

# Set backup location
Set-Location "C:\Data\SQL Backup\" 

# Backup databases
foreach ($db in $dbnames)
{
	# Move old backup
	if (Test-Path "$db.bak") { Move-Item "$db.bak" "$db-OLD.bak" -force }
	$backup = New-Object ("Microsoft.SqlServer.Management.Smo.Backup")
	$backup.Action = "Database"
	$backup.Database = $db
	$backup.Devices.AddDevice($db + ".bak", "File")
	# Starting backup process.
	$backup.SqlBackup($srv)
}  

# Set script location
Set-Location "C:\Admin Tools\"
Did you find this article useful? Why not share it with your friends?

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.