#PSTip Change database recovery model using SMO

Note: This tip requires PowerShell 2.0 or above.

Database mirroring requires that the database be in Full recovery model as a prerequisite to configure mirroring. In this post, we shall see how we can retrieve the recovery model setting for a database and then set it to Full recovery model, as required.

We can get the recovery model setting of a given SQL database by looking at the Database object properties.

Add-Type -AssemblyName "Microsoft.SqlServer.Smo, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91"
Add-Type -AssemblyName "Microsoft.SqlServer.ConnectionInfo, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91"
$conn = New-Object Microsoft.SqlServer.Management.Common.ServerConnection -ArgumentList $env:ComputerName
$conn.applicationName = "PowerShell SMO"
$conn.ServerInstance = ".\SQLEXPRESS"
$conn.StatementTimeout = 0
$conn.Connect()
$smo = New-Object Microsoft.SqlServer.Management.Smo.Server -ArgumentList $conn
$smo.Databases["MyDB"] | Select Name, RecoveryModel

This property can be modified to set a database to Full recovery model. Assuming that MyDB is in Simple recovery model, we can change the property.

$smo.Databases["MyDB"].RecoveryModel = "Full"
$smo.Databases["MyDB"].Alter()
Share on: