Toolkit/Public/New-RscMssqlSnapshot.ps1
|
#Requires -Version 3 function New-RscMssqlSnapshot { <# .SYNOPSIS Takes an on-demand snapshot of a Microsoft SQL Server database. .DESCRIPTION Triggers an immediate snapshot of the specified SQL Server database using the given SLA Domain for retention. By default, an Incremental Forever snapshot is taken, which is equivalent to a SQL Server full backup. Use -ForceFullSnapshot only when you need to force a new base full; a normal snapshot already resets a broken log chain. .LINK Schema reference: https://rubrikinc.github.io/rubrik-api-documentation/schema/reference .PARAMETER AsQuery Return the query object instead of running the query. Preliminary read-only queries may still run to gather IDs or other data needed to build the main query. .PARAMETER RscMssqlDatabase The MSSQL database object to snapshot. Pipe from Get-RscMssqlDatabase. .PARAMETER ForceFullSnapshot Force a new full snapshot instead of the default Incremental Forever snapshot. Rarely needed; a standard snapshot already resets a broken log chain. .PARAMETER RscSlaDomain An SLA Domain object to use for snapshot retention. Pipe from Get-RscSla. .EXAMPLE Take an on-demand snapshot of a database. $sla = Get-RscSla -Name "Gold" $db = Get-RscMssqlDatabase -Name AdventureWorks2019 New-RscMssqlSnapshot -RscMssqlDatabase $db -RscSlaDomain $sla .EXAMPLE Force a full snapshot. $sla = Get-RscSla -Name "Gold" $db = Get-RscMssqlDatabase -Name AdventureWorks2019 New-RscMssqlSnapshot -RscMssqlDatabase $db -RscSlaDomain $sla -ForceFullSnapshot $true #> [CmdletBinding()] Param( [Parameter( Mandatory = $true, ValueFromPipeline = $true )][RubrikSecurityCloud.Types.MssqlDatabase]$RscMssqlDatabase, [Parameter( Mandatory = $false, ValueFromPipeline = $false )][bool]$ForceFullSnapshot, [Parameter( Mandatory = $true, ValueFromPipeline = $false )][RubrikSecurityCloud.Types.GlobalSlaReply]$RscSlaDomain, [Parameter( Mandatory = $false, ValueFromPipeline = $false, HelpMessage = "Return the query object instead of running the query" )][Switch]$AsQuery ) Process { # Re-use existing connection, or create a new one: Connect-Rsc -ErrorAction Stop | Out-Null #region Create Query $query = New-RscMutation -Gql createOnDemandMssqlBackup $query.Var.input = New-Object -TypeName RubrikSecurityCloud.Types.CreateOnDemandMssqlBackupInput $query.Var.input.id = "$($RscMssqlDatabase.Id)" $query.Var.input.config = New-Object RubrikSecurityCloud.Types.MssqlBackupJobConfigInput $query.Var.input.config.forceFullSnapshot = $ForceFullSnapshot $query.Var.input.config.baseOnDemandSnapshotConfig = New-Object RubrikSecurityCloud.Types.BaseOnDemandSnapshotConfigInput $query.Var.input.config.baseOnDemandSnapshotConfig.slaId = $RscSlaDomain.Id #endregion if ( $AsQuery ) { return $query } $result = $query.Invoke() $result } } |