Einführung
Es ist immer wieder interessant, sich Oldtimer im Museum anzusehen, aber seien wir mal ehrlich:
- Können Sie sich vorstellen, sich mit einer Ente (Citroen 2 CV) und der geballten Power von 29 PS auf dem Beschleunigungsstreifen einer Autobahn einzufädeln? Da kommt man ganz schön ins Schwitzen.
- Ein antiker Käfer hat da mit 34 PS schon ein wenig mehr Leistung, aber möchten Sie wieder zurück zu der 6 V Beleuchtung dieses Autos, die nicht annähernd so hell scheint wie eine moderne Taschenlampe?
- Und unter dem Aspekt der Sicherheit: Ein Auto ohne Sicherheitsgurt, Airbags, ABS und die vielen Assistenten die in heutigen Modellen verfügbar sind? Undenkbar!
Im IT-Umfeld begegnet uns eine vergleichbare Situation leider immer wieder und wir fragen uns: Verdient das Unternehmen nicht sein Geld mit der Software? Warum vernachlässigt es diese, indem es
- die Installation von Patches unterlässt und damit große Sicherheitsrisiken eingeht, dies insbesondere vor dem Hintergrund des enormen Anstiegs durch Hacker- und Ransomware-Angriffe.
- auf neue Features und Performance-Verbesserungen aktueller Versionen verzichtet.
Möglicherweise ist der Grund mangelnde Weitsicht im Management oder die kölsche Devise “Et hätt noch immer jot jejange“ und es muss erst zu einem entsprechenden Angriff kommen, aber auch Unsicherheit und mangelnde Erfahrung bei der Aktualisierung sind vorstellbar.
Um zumindest den zweiten Aspekt auszuräumen, möchten wir in diesem Beitrag auf das Upgrade einer SQL Server Instanz von Version 2014 auf 2022 eingehen.
Obwohl sich dieses Dokument speziell auf SQL Server bezieht, treffen die meisten der hier dargestellten Aspekte generell auf Software zu, so dass hier viele Formulierungen generalisiert sind.
Warum aktualisieren?
Wie bereits in der Einführung erwähnt, häufen sich die Angriffe auf IT-Infrastruktur und Software in den letzten Jahren dramatisch. Nicht nur Profis, die von staatlichen Institutionen eingesetzt werden, um sich Vorteile zu verschaffen, indem sie der Wirtschaft anderer Staaten maximal schaden, sondern auch Hobby-Programmierer und Leute, die sich durch die Verbreitung von Rootkits im Internet profilieren möchten (Sie kennen vergleichbare Bestrebungen von Influencern), sind hier zu nennen.
Die Komplexität moderner Software ist enorm und es existieren viele Aspekte die berücksichtigt werden müssen. Leider kommt es aber trotz aller Anstrengungen der Softwarehersteller immer wieder zu Fehlern die sich entweder auf die Funktionalität oder sogar auf die Sicherheit der Software auswirken. Zur Behebung dieser Fehler stellen die Hersteller regelmäßig Patches bereit, die vom Verwender heruntergeladen und installiert werden können (müssen!).
Ein weiterer wichtiger Aspekt ist die Bereitstellung neuer Features oder von Performance-Verbesserungen. Eine Auswahl befindet sich übrigens weiter unten im Kapitel “Neue Features”.
Wann aktualisieren und: Update oder Upgrade?
Bei der Entscheidung, wann die Aktualisierung erfolgen sollte, muss unterschieden werden zwischen Updates und Upgrades.
Update
Ein Update ist die Aktualisierung der laufenden Version einer Software. Updates werden regelmäßig von den Herstellern herausgegeben und zur Installation bereitgestellt. Hierbei handelt es sich beispielsweise um
- die Korrektur von Fehlern
- die Beseitigung neu entdeckter Sicherheitslücken
- die Einarbeitung besserer Verschlüsselungstechniken bei der Datenübertragung (vgl. Mindeststandard des BSI zur Verwendung von Transport Layer Security (TLS))
- manchmal auch um kleinere Erweiterungen der Funktionalität.
Updates werden oft im 2 - 3 Monatsrhythmus herausgegeben, in speziellen Fällen, wenn gravierende Probleme identifiziert wurden, kann es jedoch auch zu Abweichungen von diesen Update-Intervallen kommen. Bei SQL-Server werden Patches seit Version 2017 im ersten Jahr sogar monatlich herausgegeben, danach alle zwei Monat bis zum Ende des Mainstream Supports.
Wegen der Wichtigkeit von Updates sollten diese möglichst schnell nach ihrem Erscheinen installiert werden.
Upgrade
Bei Upgrades handelt es um die Bereitstellung neuer Funktionalitäten die i.d.R. mit einer Änderung der Software-Version einhergehen. Ein Beispiel im SQL Server Umfeld wäre der Wechsel der Version 2019 auf 2022. Zur Installation von Upgrades kann man sich, sofern man eine neu angebotene Funktionalität nicht unbedingt benötigt / nutzen will, Zeit lassen. Erfahrungsgemäß enthalten neue Versionen auch neue Fehler und man sollte abwarten, bis ein gewisser Reifeprozess eingetreten ist bzw. die ersten Patches bereitgestellt wurden. Eine Empfehlung, die den Aufwand für die Patch-Installation gegenüber einer älteren Version unverändert belassen würde, wäre, das Upgrade erst dann auszuführen, wenn der zweimonatliche Update-Zyklus beginnt, also etwa ein Jahr nachdem die entsprechende Version auf den Markt kam. Auf jeden Fall aber sollten Sie die Upgrades nicht so weit hinauszögern, dass die von Ihnen betriebene Version aus dem Mainstream Support fällt und Sie auf den erweiterten Support angewiesen sind. In diesem Fall erhielten Sie nur noch kritische Updates, die (Ausnahme: Azure) an zusätzliche Kosten durch einen Dreijahresvertrag für erweiterten Support geknüpft sind.
Wartungsfenster
Die Aktualisierung von Software setzt oft voraus, dass zugehörige Prozesse heruntergefahren werden müssen und deshalb eine Auszeit gefordert ist. Die Häufigkeit mit der Software-Hersteller Patches bereitstellen, macht eine geregelte Patch-Planung erforderlich: Sofern es in Ihrer IT nicht längst etabliert ist, sollten Sie mit einem regelmäßigen Wartungsfenster arbeiten, das es Ihrem IT-Team ermöglicht, ggf. ungestört die vom Software-Hersteller bereitgestellten Patches zu installieren. Ein Beispiel in kleinen Unternehmen könnte “an jedem ersten / letzten Mittwoch im Monat” lauten. Der Freitag ist bei einigen Kunden auch beliebt. Hier muss aber berücksichtigt werden, dass im Fall unvorhergesehener Probleme Wochenendarbeit anfallen könnte und der Microsoft-Support Hilfsanfragen evtl. erst am darauffolgenden Montag bearbeitet.
Wichtig: Die Akzeptanz für solche Wartungsfenster, die ja evtl. eine Reduzierung der Arbeitsfähigkeit, optimalerweise aber nur eine Verschiebung gewisser Aktivitäten zur Folge hat, muss auf allen Ebenen des Unternehmens geschaffen sein.
Datensicherung nicht vergessen
Wie bei allen Änderungen im IT-Umfeld sollte vor der Aktualisierung von SQL Server eine Sicherung durchgeführt werden und zwar
- auf Betriebssystem-Ebene (Backup der virtuellen Maschine, sofern verwendet)
- auf SQL-Server Ebene (Datenbank Backup)
Vorgehensweise
Die folgenden Unterkapitel beschreiben den Vorgang bei der Aktualisierung von SQL Server. Hierbei wird von einer SQL Server Instanz 2014 ausgegangen die zunächst auf SQL Server 2022 angehoben wird und für die anschließend der neueste Patch, CU 13 vom 23.05.2024, installiert wird. Die Patches sind kumulativ (CU steht für Cumulative Update), das heißt, neuere Patches enthalten jeweils immer auch die Änderungen früherer Patches und wachsen so mit jeder weiteren CU-Nummer bezüglich ihrer Größe.
Vorgehensweise Upgrade
Die folgenden Abbildungen geben den Upgrade Prozess wieder. Ausgangspunkt ist eine SQL Server 2014 Instanz, genauer die Instanz “ZU_AKTUALISIEREN” in der Version Microsoft SQL Server 2014 (SP3) (KB4022619) - 12.0.6024.0 (Build 22631 ), deren Extended Support Ende gerade erreicht wurde.
Wie bereits erwähnt, sollten die Applikations-/Datenbankbenutzer über die geplante Aktion informiert sein. Man kann nicht oft genug darauf hinweisen: Erstellen Sie im Vorfeld eine Sicherung auf Server-Ebene und eine vollständige Sicherung Ihrer Datenbanken der zu aktualisierenden Instanz.
Starten Sie den Installer für die neue MSSQL Version. Dieser stellt ein sehr umfassendes Tool dar, das im Zusammenhang mit Installationen, Aktualisierungen und Migrationen verwendet werden kann.
In einem ersten Schritt wird durch die Systemkonfigurationsprüfung ermittelt, ob der Server, auf dem das Upgrade durchgeführt werden soll, alle erforderlichen Bedingungen hierfür erfüllt.
Nach erfolgter Prüfung und eventueller Korrektur angezeigter Hindernisse wird das Fenster über den OK-Button geschlossen und man navigiert in dem übergeordneten Fenster zu dem Bereich “Installation”.
Wie dort unten rechts angeboten, wird der Punkt “Upgrade from a previous version of SQL Server” ausgewählt.
Die nächsten beiden Seiten zum Installieren der Setupdateien und zur Überprüfung der Upgrade-Regeln werden ohne Interaktionsmöglichkeit im Hintergrund ausgeführt. Klickt man anschließend auf den “<Back” Button, gelangt man zu der Seite mit den Upgrade-Regeln, wo folgendes angezeigt werden sollte:
Anschließend muss die gewünschte Edition angegeben werden. Hier sollten Sie unbedingt die Lizenzbedingungen beachten. Wir zeigen hier das Upgrade für eine Developer Edition.
Im nächsten Schritt fordert der Installer auf, die Lizenzbedingungen zu akzeptieren.
Auf der nächsten Seite erfolgt die Auswahl der Instanz die aktualisiert werden soll. Hier wird in unserem Fall die Instanz “ZU_AKTUALISIEREN” gewählt.
Für die zu aktualisierende Instanz wurde nur die SQL Engine installiert, weitere Funktionalitäten wie beispielsweise die Freitextsuche gibt es nicht, so dass auf der Funktionenseite nur die Engine angezeigt wird.
Die nächste Seite bietet die Möglicheit, im Rahmen des Upgrades die Instanz-ID zu ändern. Im Normalfall kann diese erhalten bleiben. Hier werden wir die Möglichkeit nutzen, die ID in “AKTUALISIERT“ umzubenennen. Hierdurch ändert sich auch das SQL Server-Verzeichnis wie man auf den beiden folgenden Abbildungen erkennt.
Anschließend erhält man eine Übersicht über die Installation:
Abschließend erhält man eine Erfolgsmeldung.
Verbindet man sich mit dem Management Studio zu der Instanz, erkennt man einerseits, dass sich der Instanzname durch den Wechsel der Instanz-ID nicht geändert hat, das Root-Verzeichnis in den Instanzeigenschaften aber auf
C:\Program Files\Microsoft SQL Server\Root\MSSQL16.AKTUALISIERT\MSSQL
geändert wurde.
Leider sind wir an dieser Stelle noch nicht am Ziel unserer Installation, wie die folgende Abfrage der Versionsdetails zeigt:
Auf der Microsoft-Seite der Build-Versionen sehen wir, dass wir uns in der Basisversion befinden und damit noch das neueste Update (CU 13 mit der Build-Nummer 16.0.4125.3) installieren müssen, was im folgenden Kapitel beschrieben ist.
Und nicht vergessen …
Die neue Version bietet neue Features, die aber in den Datenbanken nicht automatisch aktiviert sind. Dies muss explizit geschehen, nachdem von Applikationsseite bestätigt wurde, dass auch die neue MSSQL-Version unterstützt wird. Im hier dargestellten Fall war der Ausgangspunkt eine MSSQL 2014 Instanz (Kompatibilitätsstufe 120) die auf MSSQL 2022 (Kompatibilitätsstufe 160) angehoben wurde. Dem entsprechend erfolgt die Änderung in den Eigenschaften der Datenbank(en) die in der Instanz betrieben wird/werden entsprechend folgender Abbildung:
Sofern Sie sehr viele Datenbanken in Ihrer Instanz betreiben, wäre die Vorgehensweise über die graphische Oberfläche jedoch umständlich. Hier läuft die Umstellung über ein Skript sehr viel schneller und komfortabler. Angenommen, Sie wollten die Änderung für die Datenbanken AdventureWorks2014, SampleDB2 und SampleDB3 vornehmen, dann müssten Sie das folgende Skript ausführen:
Vorgehensweise Update
Ausgehend von dem in dem vorhergehenden Kapitel beschriebenen Upgrade wird nun hier abschließend auch das neueste kumulative Update CU 13, Build-Nr. 16.0.4125.3 installiert. Sofern Sie den zuvor beschriebenen Upgrade-Schritte durchgeführt haben, müssen Sie Ihren Server eventuell neu starten, bevor Sie das Update installieren können.
Nach dem Herunterladen der Installationsdatei SQLServer2022-KB5036432-x64.exe wird diese ausgeführt.
Die Installation beginnt mit dem obligatorischen Akzeptieren der Lizenzbedingungen.
Auf der nächsten Seite besteht die Möglichkeit der Auswahl der Instanz die gepatcht werden soll. Es werden per Default alle Instanzen angezeigt und selektiert, für diesen Beitrag aber nur die Instanz mit dem Namen “ZU_AKTUALISIEREN” gewählt.
Auf der folgenden Seite werden alle Prozesse angezeigt, die aktuell das Patchen verhindern, weil sie zu aktualisierende Softwarekomponenten verwenden. Hier müssen also auch die Instanzen beendet werden, die vom Patchen nicht betroffen sind.
Nachdem alle betroffenen Dienste und Prozesse beendet wurden wird die Prüfung über den entsprechenden Button aktualisiert.
Abschließend erscheinen
- das Übersichtsfenster zur Installation
- der Updatefortschritt
- die Erfolgsmeldung inkl. einem Hinweis, dass der Server neu zu starten ist
Wir sind am Ziel
Nach dem Neustart des Servers fragen wir im Management Studio erneut die Version ab und erhalten
Und: Nach dem Patchen ist vor dem Patchen: Das nächste kumulative Update ist bestimmt schon in Vorbereitung.
Neue Features
Wird ein Upgrade installiert, sollte auch ermittelt werden, welche neuen Features diese Version bietet. Diese sollten den Interessenten bekanntgemacht werden, so dass sie sie verwenden können. Hier wäre im SQL Server Umfeld beispielsweise der Query Store zu nennen der ab 2016 verfügbar ist. Ebenfalls speziell im SQL Server Umfeld: Die Datenbanken sind mit einer bestimmten Kompatibilitätsstufe parametrisiert. Diese muss, damit die Datenbanken mit den neuen Features arbeiten und evtl. Performanceverbesserungen nutzen kann, an die SQL Server Version angepasst werden.
Wir haben hier den Sprung von MSSQL 2014 auf MSSQL 2022 vorgenommen. Die folgende Tabelle zeigt einige der neuen Features in einigen der neueren Versionen:
Feature / KommentarQuery Store sehr interessant!Temporale Tabellen
Unterstützung bei der Analyse von DatenänderungenSicherheitsfeaturesIdentity CacheGeschätzte Abfrageverarbeitung
Im VLDB-Umfeld interessantLink zu Azure SQL Managed InstanceVerbesserte VLF-Algorithmen
Fazit
Verantwortungsbewusste DBAs sollten ihre Software regelmäßig bezüglich neuer vorhandener Patches und neuer Versionen überprüfen. Verantwortungsbewusste Manager sollten ihre DBAs hierbei durch Bereitstellung entsprechender Ressourcen und Wartungsfenster unterstützen. Wartungsfenster heißt hierbei, dass Software für einen bestimmten kurzen Zeitraum nicht zur Verfügung steht. Dies muss allen Stakeholdern bekannt und bewusst sein. Trotzdem sollten Wartungsfenster natürlich im Rahmen eines Change entsprechend ITIL rechtzeitig bekanntgegeben werden. Wird ein Wartungsfenster nicht benötigt, muss es möglichst frühzeitig freigegeben werden.
Wenn Sie mehr zum Thema Upgrade, Update oder über Microsoft Produkte erfahren möchten, stehen Ihnen unsere Expert:innen gerne zur Seite. Vereinbaren Sie einfach ein unverbindliches Beratungsgespräch über unser Kontaktformular. Wir freuen uns von Ihnen zu hören!