bin/Public/Invoke-sqmUpdateStatistics.ps1
|
<# .SYNOPSIS Aktualisiert Statistiken in einer oder mehreren Datenbanken. .DESCRIPTION Fuehrt UPDATE STATISTICS mit konfigurierbaren Optionen aus (Scan?Prozentsatz, nur geaenderte Statistiken, etc.). Kann auf bestimmte Datenbanken, Tabellen oder Statistiken eingeschraenkt werden. .PARAMETER SqlInstance SQL Server-Instanz (Standard: aktueller Computername). .PARAMETER SqlCredential PSCredential fuer die Verbindung. .PARAMETER Database Datenbankname oder Wildcard-Muster. .PARAMETER Table Tabellenname oder Wildcard-Muster. .PARAMETER Statistics Statistikname oder Wildcard-Muster. .PARAMETER SamplePercent Prozentsatz der Zeilen, der fuer das Update verwendet wird (0 = Vollscan). Standard: 0. .PARAMETER OnlyModified Nur Statistiken aktualisieren, die seit der letzten Aktualisierung geaendert wurden. Standard: $true. .PARAMETER Index Statistiken, die mit einem Index verbunden sind, werden ebenfalls aktualisiert. Standard: $true. .PARAMETER WhatIf Zeigt, welche Statistiken betroffen waeren. .PARAMETER EnableException Ausnahmen sofort ausloesen. .EXAMPLE Invoke-sqmUpdateStatistics -Database 'SalesDB' -SamplePercent 10 .NOTES Verwendet dbatools (Update-DbaDbStatistic). #> function Invoke-sqmUpdateStatistics { [CmdletBinding(SupportsShouldProcess = $true)] param ( [Parameter(Mandatory = $false)] [string]$SqlInstance = $env:COMPUTERNAME, [Parameter(Mandatory = $false)] [System.Management.Automation.PSCredential]$SqlCredential, [Parameter(Mandatory = $false)] [string]$Database = '*', [Parameter(Mandatory = $false)] [string]$Table = '*', [Parameter(Mandatory = $false)] [string]$Statistics = '*', [Parameter(Mandatory = $false)] [int]$SamplePercent = 0, [Parameter(Mandatory = $false)] [bool]$OnlyModified = $true, [Parameter(Mandatory = $false)] [bool]$Index = $true, [Parameter(Mandatory = $false)] [switch]$EnableException ) begin { $functionName = $MyInvocation.MyCommand.Name if (-not (Get-Module -ListAvailable -Name dbatools)) { throw "dbatools-Modul nicht gefunden." } } process { try { $params = @{ SqlInstance = $SqlInstance SqlCredential = $SqlCredential Database = $Database Table = $Table Statistic = $Statistics SamplePercent = $SamplePercent OnlyModified = $OnlyModified Index = $Index EnableException = $EnableException } if ($PSCmdlet.ShouldProcess("UpdateStatistics on $SqlInstance", "Update")) { $result = Update-DbaDbStatistic @params $result | ForEach-Object { [PSCustomObject]@{ Database = $_.Database Table = $_.Table Statistic = $_.Statistic Status = 'Success' Message = "Updated" } } } else { Write-Verbose "WhatIf: UpdateStatistics would be executed on $SqlInstance" } } catch { Invoke-sqmLogging -Message $_.Exception.Message -FunctionName $functionName -Level "ERROR" if ($EnableException) { throw } } } } |