#1 Powerplan – SQL Server konfigurieren mit Powershell

Powerplans - Powershell meets SQL Server

Ich möchte in den folgenden Beiträgen auf meine Erfahrung bzw meinen Umstieg auf die Konfiguration des SQL Servers mittels Powershell eingehen und einige Beispiele (hier zum Beispiel den Powerplan) präsentieren. Es kommt immer wieder vor, dass wir verschiedenste Ausprägungen des SQL Server installieren sollen, eines haben aber alle im Grunde genommen gemeinsam… eine auf den Best-Practices beruhende Grundkonfiguration. Diese muss auf jedem SQL Server ausgerollt werden, damit dieser performant läuft. Bisher haben wir das immer manuell oder mit T-SQL gemacht, nun wird es aber Zeit diese Methode umzustellen auf eine etwas einfachere bzw zentralere Variante. Die Konfiguration des SQL Servers mit Powershell sowie ich es hier vorstelle, muss nicht für jede Umgebung passen, seht es bitte nur als Leitfaden an. Des Weiteren werde ich hier nur auf meine „Snippets“ eingehen und nicht mein ganzes Skript vorstellen, es gehört natürlich ein gewisser Powershell Rahmen (Synopsis, Hilfe etc) um das Snippet, damit es überall von jedem ausgeführt werden kann.

Powershell against “Balanced” Powerplan

Seit dem Windows 2008R2 Betriebssystem werden die Power Pläne immer mit dem Default-Powerplan „Balanced“ ausgerollt, dies kann aber unter Umständen zu starken Performance-Einbussen führen. Bei der Ausführung von einfachen Skripten oder Programmen ist die Wahrscheinlichkeit der Performance-Reduzierung eher sehr gering, allerdings je komplexer die auszuführenden Anwendungen sind, desto mehr die Server-Ressourcen genutzt werden müssen, desto mehr wird man die Nachteile des „Balanced“-Modes spüren. Im Balance-Powerplan wird zum Beispiel die Taktung des Prozessors und die Energieaufnahme der einzelnen Kerne reduziert, dadurch kann die Leistung der CPU nicht voll genutzt werden. Erst wenn man den Powerplan umkonfiguriert auf „High Performance“ kommt man in den Genuss der vollen CPU-Leistung.

Windows Server Powerplan für mehr Performance anpassen

Nun kann man sich lange durch die Einstellungen der Power Optionen des Windows Betriebssystemes klicken:

1. Start => Control Panel
2. Control Panel => Power Options (notfalls das Wort „Power“ in das Suchfeld eingeben)
3. Per default ist die Auswahl der einzelnen Powerpläne disabled, man muss also erst auf den Link „Change settings that are currently unavailable“ klicken.
4. Nun kann man den Powerplan „High Performance“ auswählen.
5. Power Option Fenster schliessen

Man könnte dies aber – wie der Beitragstitel andeutet – auch mit Powershell ändern, dies vereinfacht bei Wiederholungen die Änderung am jeweiligen Server.

function SetPowerPlan([string]$PreferredPlan) 
{ 
    Try
    {
        Write-Host "Setting Powerplan to $PreferredPlan" 
        $HighPerf = powercfg -l | %{if($_.contains("High performance")) {$_.split()[3]}}
        $CurrPlan = $(powercfg -getactivescheme).split()[3]
        if ($CurrPlan -ne $HighPerf) {powercfg -setactive $HighPerf}
    } 
    Catch
    {
        Write-Host "Setting the value of powerplan properties failed." -ForegroundColor Red
    }
}

Man muss zwar den leichten Umweg über die „Kommandozeile“ nehmen, diese lässt sich mit Powershell aber recht einfach „auslesen“ und weiter verarbeiten bzw manipulieren.
Also erst die ID des „High Performance“ Powerplan ermitteln, dann auch die ID des aktuellen Powerplans, beide IDs miteinander vergleichen, bei Anweichungen wird über die powercfg.exe der neue Powerplan aktiviert.

Wie ich mittlerweile gelernt habe… typisch Powershell… kurz, einfach und wirksam 😉
Ich kann nur jedem empfehlen sich mit Powershell für den SQL Server zu beschäftigen, in den nächsten Beiträgen werde ich noch einige Snippets veröffentlichen.

Morgen finden erst einmal die Pre-Cons im Rahmen des SQLSaturday München #555 statt, auch hier werde ich wieder viel zum Thema Automatisierung auf SQL Servern mittels Powershell erfahren. Garantiert wieder mit vielen neuen Ideen für weitere Anwendungen von Powershell im täglichen Einsatz.

Björn arbeitet in Hamburg als Datenbank-Administrator und Head of Competence für MS SQL und mySQL. Er nimmt regelmäßig an den PASS Regionalgruppen Treffen in Hamburg, den Veranstaltungen der PASS wie SQLSaturday und SQLGrillen teil und er organisiert in Hamburg das Azure Meetup. Er interessiert sich neben den Themen rund um den SQL Server, Powershell und Azure für Science-Fiction, Snowboarden, Backen 😉 und Radfahren.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.