#1 Powerplan – SQL Server konfigurieren mit Powershell

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.

PASS RG Hamburg – Treffen Juli 2016 – Master Data Services

Conny und Sascha laden am Mittwoch, den 13. Juli 2016 wieder alle Microsoft Data Platform Interessierten herzlich zu einem spannenden Abend bei Microsoft ein, dieses Mal mit dem Thema „Master Data Services“. Das regelmäßige Treffen der PASS Regionalgruppe Hamburg findet auch diesen Monat wieder in der MICROSOFT Niederlassung Hamburg statt. Termin: Mittwoch, 13 . Juli 2016, 18:30 Uhr bis ca. 20:30 Uhr

Master Data Services 2016: Was gibt es neues bei den Masterdaten?

Diesen Abend wird Christoph Seck etwas über die Master Data Services im SQL Server 2016 erzählen.

Endlich (aka „Ja, sie leben noch“), es tut sich wieder etwas bei den MDS.

• Kaskadierende Parameter
• Aufregendes bei den Business Rules
• Modellübergreifende Referenzen
• Entrümpeln des Hierarchieunwesens

Etc. etc. Das schauen wir uns alles genau an und riskieren dann auch den einen oder anderen Blick unter die DB Haube.

für die BI Freunde: SCD2 in der Luxusvariante

Unter dem Begriff Slowly Changing Dimensions (deutsch: sich langsam verändernde Dimensionen) werden im Data-Warehousing Methoden zusammengefasst, um Änderungen in Dimensionstabellen zu erfassen und gegebenenfalls historisch zu dokumentieren. Im Wesentlichen unterscheidet man drei Verfahren, die nach Kimball (Lit.: Kimball, 2002) in Typen unterteilt werden. Allen gemein ist, dass vorhandene Datensätze über den Primärschlüssel mit neuen Datensätzen verbunden werden, um Änderungen in der Tabelle zu speichern. Technische Schlüssel sind aktuell nicht Gegenstand des Artikels.

Typ 2 ist ein komplexes Verfahren, um Dimensionstabellen oder einzelne Attribute der Tabelle zu historisieren, um zu jedem Zeitpunkt die dann gültigen Ausprägungen der Tabelle ermitteln zu können. Dies wird erreicht, indem zu jedem Datensatz ein Gültigkeitsintervall abgelegt wird. Um die Eindeutigkeit des PK zu gewährleisten, ist dieser um zumindest eines der Intervallattribute zu erweitern. In der Regel wird ein unten abgeschlossenes Intervall verwendet, indem der aktuell gültige Satz als unendlich gültig gekennzeichnet ist. Grundlage ist der Vergleich der vorhandenen Datensätze mit den neuen Datensätzen aus einer vollständigen und periodischen Extraktion über den fachlichen Primärschlüssel ohne das Gültigkeitsattribut oder die -attribute.

Quelle: https://de.wikipedia.org/wiki/Slowly_Changing_Dimensions

Christoph works as a BI Architect for KI Performance. With SQL Server and its BI Stack he is dealing for more than 15 years.
He is cofounder and chapter leader of the German PASS chapter of Hannover, Visiting Lecturer at the University of Hildesheim and regular speaker at conferences and German PASS events on DWH topics and agile project management.

 

Also wie bereits oben erwähnt trifft sich die SQL PASS RGV Hamburg:

Donnerstag, 11. Februar 2016, 18:30 Uhr bis ca. 20:30 Uhr in der MICROSOFT Niederlassung Hamburg (Adresse unten)

Microsoft Deutschland GmbH
Geschäftsstelle Hamburg
Gasstraße 6a
22761 Hamburg

Kostenlose Parkplätze befinden sich hinter dem Gebäude. Der Parkplatz ist über die Rampe mit dem Schild “Microsoft Kunden” erreichbar.
Nur wenige Minuten zu Fuß ist der S-Bahnhof Bahrenfeld entfernt (S1/S11).

Ansprechpartner vor Ort: MS Empfangs-Team, Cornelia Matthesius und Sascha Lorenz.

Wir bitten um eine vorherige Anmeldung per Email an: rgv_Hamburg@sqlpass.de

Wichtig: Wir benötigen die Anmeldungen möglichst 2 Tage vor dem Treffen, da wir uns bei Microsoft treffen können und dort Besucherausweise ausgestellt werden. Spontane Teilnehmer sind dennoch herzlich willkommen.

Im Namen von Conny & Sascha Vielen Dank und viele Grüße an alle Interessenten.

SQL Server 2016 – IFI-Aktivierung und TempDB-Optimierung

Jetzt wo der SQL Server 2016 offiziell erschienen ist, kommen auch immer mehr Details ans Licht, so dass man sich so langsam auf die ersten „richtigen“ Installationen vorbereiten kann/muss. Was hat sich im Vergleich zum SQL Server 2014 im Rahmen der Installation alles geändert? Wie muss man die vorhandene Dokumentation anpassen?

Beim Lesen zahlreicher Tweets und Blogs bin ich über einen Tweet zum SQL Server 2016 von Thomas Larock gestolpert, hier hat er eine sehr schöne Übersicht über eine Vielzahl von Neuerungen im SQL Server 2016, mit denen man zum Beispiel die Performance des SQL Servers steigern kann, erstellt. Bisher musste man eine Vielzahl von Parametern und Einstellungen zur Performance Optimierung vor der Installation (z.B. Instant File Initialization) oder wie die Anzahl der TempDB-Files nach der Installation anpassen.

Ich möchte hier auf die Neuerungen im Rahmen der SQL Server 2016 Installation eingehen, über die ich mich persönlich sehr freue, weil sie einen Teil meiner Arbeit sehr vereinfachen.

Instant File Initialization

Bisher musste man umständlich VOR der Installation des SQL Servers immer über die lokale Sicherheitsrichtlinie über das System-Tool „secpol.msc“ dem SQL-Service-User die Berechtigungen für „Perform Volume Maintenance Tasks/Durchführen von Volumenwartungsaufgaben“ einräumen. Erst das Tool öffnen, dann durch einen Strukturbaum klicken und noch die richtige Berechtigung finden, um dann den User in der Userverwaltung zu suchen… ein wirklich aufwändiger Weg um das Vollschreiben neuer Dateien bzw Dateibereiche zu umgehen, um so z.B. den Autogrowth Event zu beschleunigen…

Jetzt mit dem neuen SQL Server 2016 geht es wesentlich einfacher, da der Installationsprozess die Arbeit für uns übernimmt. Hier hat Microsoft, die in der Community gängige Praxis optimal umgesetzt und im Rahmen der Installation die Möglichkeit geschaffen einfach nur einen Haken zu setzen… tada…

SQL Server 2016 - Instant File Initialization

Nun kann man ganz einfach während der Installation einen Haken setzen und der Installationsprozess übernimmt für einen die Arbeit. Vielen Dank hierfür an Micorsoft!
Falls man den SQL Server 2016 von der Commandline installiert, hat man beim Aufrufen der „Setup.exe“ auch die Möglichkeit diesen Parameter entweder in der ConfigurationFile.ini mit anzugeben oder direkt als Option am Aufruf

/SQLSVCINSTANTFILEINIT=”True”

Automatic TEMPDB Configuration in SQL Server 2016

Die Konfiguration der TempDB nach erfolgter Installation nahm immer ein wenig Zeit in Anspruch, natürlich konnte man das bisher auch skripten, aber so einfach wie jetzt war es noch nie bzw es bedeutete trotzdem einen gewissen Aufwand. Auch diese Konfiguration hat Microsoft in den Installationsprozess verlegt, so dass man nach der Installation nicht noch ein weiteres Skript aufrufen muss.

SQL Server 2016 - Config TempDB

In diesem neuen Tab unter Database Engine Configuration kann man die Anzahl der TempDB-Files, deren initiale Größe und Autogrowth-Wert festlegen. Man kann die Pfade beider Filetypen individuell anpassen, theoretisch könnte man auch mehrere Pfade für die TempDB-Datenfiles angeben.

Auch bei diesem neuen Konfigurations-Tab gibt es die Möglichkeit die Parameter über die ConfigurationFile.ini oder die Kommandozeile mitzugeben.

/SQLTEMPDBFILECOUNT=”8″ /SQLTEMPDBFILESIZE=”16″ /SQLTEMPDBFILEGROWTH=”256″ /SQLTEMPDBDIR=”C:\tempdb” “D:\tempdb” /SQLTEMPDBLOGFILESIZE=”256″ /SQLTEMPDBLOGFILEGROWTH=”0″ /SQLTEMPDBLOGDIR=”E:\tempdblog”

Diese oben genannten Optimierung (oder besser Vereinfachungen) machen die Installation und performance-orientierte Konfiguration des SQL Servers wesentlich komfortabler. Allerdings hat es auch einen kleinen Nachteil (*Augenzwinker*), die DBAs verlieren einen Teil ihres Einflusses, da nun jeder die Möglichkeit hat, diese Performance-Schrauben zu bedienen.

SQLSaturday #525 – Rheinland 2016 – kostenfreie SQLServer Training

Jetzt geht es endlich los am Freitag… der SQLSaturday #525 im Rheinland (Bonn-Rhein-Sieg Universität, Grantham-Allee 20, 53757 Sankt Augustin), zahlreiche nationale und internationale SQL Server Professionals geben ihr Wissen kostenfrei an die Community weiter. Der eigentliche Event findet – wie der Name schon sagt – am Samstag, den 11.Juni 2016 statt. Aber auch in diesem Jahr hat es das Organisationsteam um Oliver Engels und Tillmann Eitelberg auch für den Freitag eine Pre-Con anzubieten. VIELEN DANK dafür!

Für die Spätentschlossenen unter euch, wer noch kommen möchte… hier schnell anmelden => http://www.sqlsaturday.com/525/EventHome.aspx

Also am Freitag geht es bereits um 9:00 unter dem Motto „From Zero to Hero“ (nicht nur für Einsteiger!) mit folgenden spannenden Themen los:

Die Pre-Cons sind als Workshop gedacht, so dass man jedem die Möglichkeit bietet sich intensiv mit den Inhalten auseinander zusetzen, aber dies eben nicht alleine sondern mit den Sprechern und den anderen Teilnehmern. So erhält man einen wesentlich tieferen Einblick in die Themen und kann auch gleichzeitig noch sehr gut networken.

FROM ZERO TO HERO: Cortana Intelligence

Predictive Analytics oder Data Science sind in einer Zeit, in der die Menge an Daten stetig zunimmt, wertvolle Hilfsmittel. Dementsprechend gehören Data Scientists derzeit zu den begehrtesten Experten in der IT-Branche. Die Einsatzbereiche sind vielfältig und reichen von der Vorhersage von Fußballergebnissen über persönliche Kaufempfehlungen in Online-Shops bis zum Ergreifen präventiver Wartungsmaßnahmen in der industriellen Produktion. In diesem Workshop werden wir anhand eines anschaulichen Szenarios die Analytics-Dienste der Azure-Datenplattform vorstellen und selber aufbauen, mit denen aus der Datenflut hilfreiche Erkenntnisse gewonnen werden können: Azure Data Factory, Azure Data Lake Analytics, Stream Analytics und Machine Learning.

Unsere Sprecher:
Sascha Dittmann ist Cloud Solution Architect bei der Microsoft Deutschland GmbH und unterstützt hierbei Kunden beim Implementierungsprozess erfolgreicher Cloud-Lösungen. Seine Schwerpunkte liegen in der Softwareentwicklung für die Microsoft Azure Plattform, sowie im SQL Server Business Intelligence und Big Data Bereich. Bevor er Ende 2015 zu Microsoft kam, war er viele Jahre bei der heutigen Ernst & Young GmbH tätig; Davon 13 Jahre als Softwareentwickler und 3 Jahre als Solution Architect. Während dieser Zeit Gründete er auch die Community-Webseiten cloudbloggers.de und cloudbloggers.net und war Mitbegründer des .NET Stammtischs Rheinhessen und der Xamarin User Group Frankfurt. Zwischen 2012 und 2015 wurde er 4-mal von Microsoft mit dem "Microsoft Most Valuable Professional"-Award für seine Arbeit im Microsoft-Azure-Umfeld ausgezeichnet.

Scott Klein is a Microsoft Data Platform Technical Evangelist who lives and breathes data. His passion for data technologies brought him to Microsoft in 2011 which has allowed him to travel all over the globe evangelizing SQL Server and Microsoft’s cloud data services. Prior to Microsoft Scott was one of the first 4 SQL Azure MVPs, and even though those don’t exist anymore, he still claims it. Scott continues to look for ways to help developers grok the benefits of cloud computing.

Zeit  Freitag, 10. Juni 2016, von 09:00 Uhr bis 17:00 Uhr (MESZ)

Quelle/Anmeldung: https://www.eventbrite.de/e/sqlsaturday-525-from-zero-to-hero-cortana-intelligence-tickets-25501799569

FROM ZERO TO HERO: Datawarehousing mit dem SQL Server

Die bekannteste Komponente des Microsoft SQL Servers stellt sicherlich die relationale Engine dar. Neben dieser bietet der SQL Server aber zahlreiche Dienste, die für den Aufbau eines Datawarehouses genutzt werden können. Genau mit diesen Diensten werden sich Gabi Münster, Klaus Höltgen und Frank Geisler beschäftigen. In der ganztägigen Veranstaltung wird die komplette Reise der Daten von der Datenquelle in das relationale Datawarehouse und dann schlussendlich in die Berichte gezeigt. Dabei stehen die SQL Server Komponenten Integration Services, Analysis Services und Reporting Services im Fokus. Ziel des Workshops in dem es auch einige praktische Übungen geben wird, ist es das die Teilnehmer einen Überblick über die Möglichkeiten bekommen wie man ein Datawarehouse mit Microsoft Bordmitteln aufbauen kann. Um an den Übungen teilzunehmen sollte man einen Laptop mitbringen. Eine Übungsumgebung auf Basis von Azure wird gestellt.

Unsere Sprecher:
Gabi Münster befasst sich seit 2005 mit BI Themen rund um den gesamten Microsoft BI Stack; schwerpunktmäßig mit SSAS und SSRS. Seit 2010 ist sie als Consultant für die oh22data AG aktiv. Erfahrung als Speaker sammelt sie bei Regionalgruppen und Konferenzen.

Frank Geisler ist geschäftsführender Gesellschafter der GDS Business Intelligence GmbH und beschäftigt sich in seinem Unternehmen mit dem Microsoft BI Stack und SharePoint Lösungen. Dabei legt er als MCSE – Business Intelligence und MCSE – Data Plattform sowohl Wert auf die Administration als auch die Entwicklung von BI Systemen und kennt den SQL-Server seit der Version 6.5 und SharePoint seit dem Projekt „Tahoe“. Frank hält des Öfteren Vorträge auf Konferenzen, an Universitären oder Usergroup-Treffen und schreibt regelmäßig Artikel für verschiedene deutsche Fachzeitschriften. Außerdem hat er schon einige Bücher veröffentlicht, unter anderem hat er ein grundlegendes Buch zum Thema „Datenbanken“ geschrieben und ist Mitautor der „SharePoint für Dummies“-Bücher. Er gehört zu den Gründungsmitgliedern der PASS Deutschland e.V. und ist zusammen mit Klaus Höltgen Chapter Leader der Regionalgruppe Ruhrgebiet. Für seine Community Arbeit ist Frank im Juli 2014 zum MVP SQL Server ernannt worden.

Klaus Höltgen ist Solution Design Manager bei der Bayer Business Services GmbH und beschäftigt sich seit mehr als 10 Jahren mit DWH Lösungen im Bereich Microsoft BI und SQL Server. Seine Schwerpunkte liegen hierbei neben der multidimensionaler Analyse auf SQL und ETL und der Community Arbeit für die PASS. Er ist Gründungsmitglied, Regionalgruppenverantwortlicher der RG Ruhrgebiet und Finanzvorstand der PASS Deutschland e.V.

Zeit  Freitag, 10. Juni 2016, von 09:00 Uhr bis 17:00 Uhr (MESZ)

Quelle/Anmeldung: https://www.eventbrite.de/e/sqlsaturday-525-from-zero-to-hero-datawarehousing-mit-dem-sql-server-tickets-25499697281

Aber erst recht am Samstag gilt es eine ganze Menge Know-How zu sammeln…

Hier nur mal ein Ausschnitt aus der Vielzahl der Sprecher und ihren Themen rund um den SQL Server

JSON & XML; seit SQL 2016 gilt es die jeweiligen Vorteile abzuwägen – Alexander Karl
Joga für die Datenbank – Stretch Database in SQL Server 2016 – Patrick Heyde
R Services in SQL Server – Revolution oder Spielzeug? – Mark A. Kuschel
Die Quadratur des Kreises? Wie NoSQL und der SQL Server zueinander finden. – Benjamin Kettner
Fun with Legal Information in SQL Server: Data Retrieval – Matija Lah
Scripting tabular models – Bent Pedersen
Best practices in modelling Power pivot. – Henk Vlootman
Are Temporal Tables a useful feature? – Uwe Ricken
Cloud Wars – what‘s the smartest data platform? – Stefan Kirner
Are You a DBA by Accident? Welcome to the Club! – Markus Ehrenmueller-Jensen

Mehr zu den einzelnen Sessions und dem Zeitplan findet ihr unter: http://www.sqlsaturday.com/525/Sessions/Schedule.aspx

Wer also am kommenden Samstag noch nichts vor hat… der ist herzlich eingeladen den SQLSaturday#525 der SQL PASS Regionalgruppe Rheinland 2016 zu besuchen!

SQL Server Backup – Erstaunliche Grundlagen

Eigentlich wollte ich nur einen „einfachen“ Beitrag über das Thema SQL Server Backup schreiben, aber bei den Recherchen stellte ich fest, dass das Thema SQL Server Backup doch sehr umfangreich und „mächtig“ ist und es sehr wahrscheinlich nicht nur mit einem Beitrag getan ist. Daher werde ich die einzelnen Beiträge in 3 Blöcke aufteilen, so dass ich mich in jedem Beitrag einem bestimmten Schwerpunkt widmen kann.

Grundlagen / Voraussetzung / Vertragliches zum Thema SQL Server Backup

Jeder kennt das, man hat gerade wieder einen neuen SQL Server aufgesetzt und konfiguriert, die ersten User und die erste Datenbank wurden angelegt, vielleicht sogar schon diie ersten Tests der Applikation erfolgreich abgeschlossen…

Zu Anfang konfigurieren Applikationsverantwortliche, Drittdienstleister und vielleicht auch Enduser noch fleißig an allem herum und testen die einzelnen Einstellungen der Applikation, was bewirkt was und wie können angepriesene Features sinnvoll im Betrieb genutzen werden.

ABER was machen, wenn plötzlich gar nichts mehr geht, die Daten sind plötzlich weg, die Konfiguration so „verdreht“, dass man sich nicht mehr anmelden kann???

Dann ist das Geschrei groß, Daten und Konfiguration werden in der Datenbank gespeichert… wir müssen die Datenbank wieder herstellen… „Ach Mist, wir haben vergessen das Backup einzurichten…  😮

Also bevor mach solche „Spielereien“ anfängt, sollte man erst ein Backup einrichten ! Aber wie am Besten ?

  • Wie oft muss die Datenbank gesichert werden?
  • Wie schnell muss die Wiederherstellung funktionieren?
  • Wie groß wird die Datenbank?
  • Wie groß sind die täglichen Änderungen?
  • Gibt es definierte Wartungsfenster?
  • Muss beim Backup des SQL Servers etwas besonderes beachtet werden (Stichwort Konsistenz)
  • Läuft zu einem bestimmten Zeitpunkt/-raum eine Bewirtschaftung?
  • Welche Methoden muss ich einsetzen?
  • Welche Tools und/oder Skripte muss ich ggf einsetzen?
  • Gibt es vertragliche Definitionen zu obigen Fragen?

Fragen über Fragen, zu denen ich versuche eine Antwort zu liefern.

Vertragliche Rahmenbedingungen fürs SQL Server Backup:

Erst einmal sollte die vertragliche Seite überprüft werden! Muss ein SLA gewährleistet werden, enthält dieses Servicelevel Agreement bestimmte Vorgaben zu „Max Time of Data Lost“, „Max Time to Restore“ oder vielleicht sogar einen definierten Sicherungsplan, was wann wie oft gesichert werden muss.

Diesen vertraglichen Rahmen gilt es mit den einzurichtenden und zu planenden Sicherung abzudecken, damit beide Vertragsseiten durch ein einwandfreies und gut funktionierendes SQL Server Backup abgesichert sind und es nicht zu Problemen im Betrieb des SQL Servers kommt.

Beispiel für einen SLA

Wir betreiben für einen unserer Kunden einen SQL Server mit einer definierten Servicezeit (Bedienter Betrieb) von 8:00 – 18:00 Uhr an jedem Werktag (mit Ausnahme von bundeseinheitlichen Feiertagen), daraus ergeben sich laut dem Vertrag folgende Verfügbarkeiten:

Verfügbarkeit Monatsmittel Verfügbarkeit Jahresmittel Gesamt-Ausfallzeit Jahr [Std.]
95,38% 99,04% 25,00

Aber auch eben eine RTO (Recovery Time Objective) von 72h und eine RPO (Recovery Point Objective (RPO) von 24h.

Bei der Beurteilung einer Disaster-Recovery-Lösung sind folgende Punkte einer Business Impact Analyse zu beachten:

  1. Recovery Time Objective (RTO) – Wie lange darf ein Geschäftsprozess/System ausfallen? Bei der Recovery Time Objective handelt es sich um die Zeit, die vom Zeitpunkt des Schadens bis zur vollständigen Wiederherstellung der Geschäftsprozesse (Wiederherstellung von: Infrastruktur – Daten – Nacharbeitung von Daten – Wiederaufnahme der Aktivitäten) vergehen darf. Der Zeitraum kann hier von 0 Minuten (Systeme müssen sofort verfügbar sein), bis mehrere Tage (in Einzelfällen Wochen) betragen.
  2. Recovery Point Objective (RPO) – Wie viel Datenverlust kann in Kauf genommen werden? Bei der Recovery Point Objective handelt es sich um den Zeitraum, der zwischen zwei Datensicherungen liegen darf, das heißt, wie viele Daten/Transaktionen dürfen zwischen der letzten Sicherung und dem Systemausfall höchstens verloren gehen. Wenn kein Datenverlust hinnehmbar ist, beträgt die RPO 0 Sekunden. Quelle: Wikipedia

Anhand dieser Zahlen aus dem Vertrag muss man sich nun eine Backup-Strategie überlegen – wobei das eigentlich schon vorher festgelegt werden muss, sonst kann man solche Angebote nicht machen 🙂  – um dem Kunden und dem Vertrag dienlich zu sein.

  • Welche Backup-Methode muss man also nun wählen, um diese Vorgabe von 24 Stunden maximalen Datenverlust zu gewährleisten?
  • Wie oft müssen die Datenbanken gesichert werden?
  • Welche Einstellung bzgl Recovery Mode müssen gewählt werden?
  • Ist ein „Point-in-Time“ Restore notwendig?

Wie das immer so ist mit den Datenbanken und ihren „Eigenheiten“… eine allgemein gültige Empfehlung kann man nicht aussprechen… #ItDepends

Es ist also davon abhängig, was die Applikation für Anforderungen hat:

Was macht die Applikation mit den Daten? Handelt es sich „nur“ um die Quelle eines Reporting-Systems und können die Daten in angemessener Zeit aus anderen Quellen wieder bereitstellen? Oder werden die zu sichernden Datenbanken nur als „Zwischenschicht“ in einem ETL-Prozess benötigt. Oder handelt es sich um ein Online-Transaktions-System eines Payment-Dienstleister?

Jede Anwendung, jedes System hat eigene Anforderungen, so dass man eigentlich nur eine „Richtlinie“ definieren kann, an der man sich orientieren kann.

Eckpunkte zur Erstellung einer SQL Server Backup Strategie

Zu Anfang ein Beispiel aus dem Leben, nachdem ich an meiner bisherigen SQL Server Backup Strategie gezweifelt habe und diese anfing zu überdenken. Denn manchmal werden die folgenden Punkte nicht oder zu wenig beachtet und man hat dann im laufenden Betrieb langwierige Fehlersuchen bzw eine Suche nach der Nadel im Heuhaufen.

die Nadel im Heuhaufen suchen - SQL Server Backup Strategien

Erstellen Sie unbedingt eine Testumgebung, um die allgemeinen Werte und Bedingungen ihrer Systemlandschaft zu ermitteln. Was nützt es ihnen oder ihren Kunden, wenn sie eine gut strukturierte und sinnvoll geplante SQL Server Backup Strategie haben, diese aber nur in der Theorie einwandfrei funktioniert. Wir haben bisher eine solche unternehmensweite Strategie… alle SQL Server sollen mittels 3rd Party Tool gesichert werden… einmal täglich ein Vollsicherung und alle 20 Minuten (oder je nach SLA) eine TransactionLog-Sicherung. Diese Backup Strategie beruht aber auch darauf, dass dieses 3rd Party Tool kein Differential Backup kann.
Nun habe ich aber in einer Performance Analyse festgestellt, dass auf einem Sharepoint-SQL-Server die TransactionLog-Sicherung alle 20 Minuten läuft und somit eigentlich dauerhaft die Performance des SQL Servers beeinträchtigt, da die Laufzeit der Sicherung „zu hoch“ ist.

Dank eines TSQL-Statement von Brent Ozar konnte ich ermitteln, wie hoch die Transfer-Rate mittels 3rd Party Tools ist (bei separater Anbindung an die Backup Infrastruktur mit 10GBit) von sagenhaften 43Mbps im Schnitt… hier stimmt also irgendwas nicht. Wenn ich auf diesem System jetzt ein Backup2Disc mache, erhöht sich die Durchsatzrate auf ~250Mbps im Schnitt, das SQL Server Backup erhöht sich also um mehr als 5-fach, somit reduziert sich auch die Zeit in der der SQL Server durch das Backup belastet wird.

Daher gut überlegen und testen, testen und wieder testen!!!

Welcher Recovery-Mode muss gewählt werden?

Grundsätzlich sollte man seine Datenbanken regelmäßig sichern, darüber sind wir uns alle einig. Dann kommt es darauf an, welche Anforderungen die Applikation an die Datenbank stellt, hier muss man sich mit den Applikationsverantwortlichen abstimmen, welcher Recovery-Mode für die Datenbanken sinnvoll ist und was man ggf in Rücksicht auf die vertragliche Situation für einen Kompromiss finden muss.

Wie oft – in Abhängigkeit zum Recovery-Mode – muss gesichert werden?

Je nach Recovery-Mode (Simple, Full, Bulk-Logged) muss entschieden werden, wann welche Sicherung läuft und mit welcher Häufigkeit gesichert werden muss. Hier spielen die oben ermittelten Werte (RTO, RPO, Point-In-Time, Durchsatz) eine große Rolle, um einen passenden Schedule bestimmen zu können. Dies kann im laufenden Betrieb natürlich angepasst werden, wenn sich Prozesse (Bewirtschaftung, Verarbeitung, Reporting) ändern.

Womit soll gesichert werden? eigene TSL-Skripte, bewährte TSQL-Skripte oder 3rd-Party-Tool

Soll man das Rad noch einmal neu erfinden oder greift man auf bewährte Maintenance-Lösungen aus dem Netz zurück (z.B. das Maintenance-Skript von Ola Hallengren) oder gar ein 3rd Party Tool erwerben? Dies hängt natürlich von der Unternehmens-Backup-Strategie ab bzw von den oben bereits angesprochenen Rahmenbedingungen. Ich bin der Meinung, dass sich eine Lösung aus lokalem Backup mittels TSQL-Skripten/SQL-Agent-Jobs und 3rd Party-Tool bewährt hat. (meine persönlich bevorzugte Methode ist das Skript von Ola Hallengren (Backup2Disc) und dann eine Filesystem-Sicherung auf Tape)

Dies waren die grundlegenden Überlegungen, die man sich zum Thema SQL Server Backup machen sollte, da sie überaus wichtig sind. Aber wie bereits oben schon einmal erwähnt… #ItDepends
Jede Applikation, jeder Kunde, jedes Unternehmen, jeder SQL Server ist anders, daher kann dies nur als Leitfaden dienen.