• Beitrags-Kategorie:SQL
  • Lesedauer:20 min Lesezeit

Dies ist meine Checkliste um einen Microsoft SQL Server auf einem Windows Server zu installieren und konfigurieren. Diese Liste deckt nicht jeden Anwendungsfall ab (z.B.: SQL für Sharepoint braucht spezielle Hingabe) und führt nicht Schritt für Schritt durch die Installation des SQL Servers. Zum Ausgleich habe ich zu fast jedem Punkt eine Erklärung (Update 12.2022) hinzugefügt warum ich diese Empfehle. Ebenfalls dabei, ein Link mit detaillierteren Informationen und Anleitungen hinzugefügt.

Voraussetzungen

  • eine dezidierte IP für das Betriebssystem und jede installierte SQL Instanz (also min. 2)
  • eigene Service-Accounts für alle installierten SQL Dienste (aka Instance Features – SQL Server, SQL Server Agent, …) (also min. 3)
  • 3 Disken für Data, Log und TempDB, pro SQL Instanz, mit schnellem Storage und formatiert in 64k.
    • SQL Backups lege ich gerne auf eine 4te eigene Disk, dies hängt aber vom Backup-Konzept ab.
  • genügen CPU-Kerne (SQL Lizenzierung beachten) und viel Arbeitsspeicher.
    • Wie viel ist genug? … die Antwort ist wie immer „It depends“ 😉

Windows Konfiguration

Folgende Empfehlungen betreffen das Betriebssystem Windows Server.

Daten, Log und TempDB Disken in 64k formatieren.

Infos: https://blog.sqlserveronline.com/

Das Formatieren von Festplatten in 64k-Blöcken auf einem SQL Server kann zu einer Verbesserung der Leistung führen, da es die Anzahl der I/O-Operationen pro Block verringert. Die Verwendung von größeren Blockgrößen kann dazu führen, dass der SQL Server weniger häufig auf die Festplatte zugreifen muss, um die gleiche Menge an Daten zu verarbeiten, was wiederum die Leistung verbessert. Es ist jedoch wichtig zu beachten, dass die Wahl der optimalen Blockgröße von verschiedenen Faktoren abhängt, wie zum Beispiel der Größe und dem Zweck der Datenbank, und daher sollte sorgfältig abgewogen werden.

Windows Power Plan auf “High Performance” konfigurieren.

Infos: https://blog.sqlauthority.com/

Auf einem Windows Server, auf dem SQL läuft, kann die Konfiguration des Power Plans auf „High Performance“ die Leistung verbessern, indem sichergestellt wird, dass der Server die volle Leistung des Prozessors und anderer Hardware-Komponenten nutzen kann. Wenn der Power Plan auf „High Performance“ eingestellt ist, wird das Betriebssystem weniger Energie sparen, wodurch die CPU-Taktrate erhöht werden kann und die Leistung verbessert wird. Es ist jedoch wichtig zu beachten, dass die Verwendung von „High Performance“ zu höheren Stromkosten führen kann und daher sollte sorgfältig abgewogen werden.

Netzwerk Teaming konfigurieren (wenn vorhanden).

Info: https://docs.microsoft.com/

Lock Pages in Memory konfigurieren.

gpedit.msc starten und navigiere über Computer Configuration/Windows Settings/Security Settings/Local Policies/User Rights Assignment zu Lock pages in memory. Hier den Benutzer des SQL Server Services angeben.
Infos: https://blog.sqlauthority.com/

Die Konfiguration von „Lock Pages in Memory“ kann die Leistung verbessern, indem sichergestellt wird, dass der Server den Arbeitsspeicher, den er benötigt, nicht durch das Betriebssystem freigeben muss. Wenn „Lock Pages in Memory“ aktiviert ist, wird das Betriebssystem verhindern, dass der SQL Server-Prozess Arbeitsspeicher freigibt, was dazu führt, dass der Server den benötigten Arbeitsspeicher immer zur Verfügung hat. Dies kann die Leistung verbessern, indem verhindert wird, dass der Server immer wieder neuen Arbeitsspeicher allokieren muss. Es ist jedoch wichtig zu beachten, dass die Verwendung von „Lock Pages in Memory“ sorgfältig geplant werden muss, um sicherzustellen, dass genügend Arbeitsspeicher für andere Prozesse auf dem Server verfügbar bleibt.

Manage Auditing and security log konfigurieren

Im noch offenen gpedit.msc Fenster, im gleichen Verzeichnis unter Manage Auditing and security log den Benutzer des SQL Server Agents und SQL Server angeben.
Infos: https://docs.microsoft.com/

Die Konfiguration von „Manage Auditing and Security Log“ kann dazu beitragen, das Sicherheitsniveau des Systems zu erhöhen, indem sichergestellt wird, dass potenziell schädliche Aktivitäten auf dem Server protokolliert werden. Wenn „Manage Auditing and Security Log“ aktiviert ist, werden die Aktivitäten, die auf dem Server ausgeführt werden, protokolliert, was es Administratoren ermöglicht, später zu überprüfen und potenziell schädliche Aktivitäten zu identifizieren und zu untersuchen. Die Verwendung von „Manage Auditing and Security Log“ kann daher dazu beitragen, das Sicherheitsniveau des Systems zu erhöhen und potenzielle Sicherheitsbedrohungen frühzeitig zu erkennen und zu beheben.

Perform volume maintenace tasks konfigurieren.

Jetzt zu Computer Configuration/Windows Settings/Security Settings/Local Policies/User Rights Assignment/Perform volume maintenace Tasks wechseln und hier den Benutzer des SQL Server Dienstes angeben.
Infos: https://www.sqlshack.com/

Die Konfiguration von „Perform volume maintenance tasks“ kann dazu beitragen, die Leistung und Zuverlässigkeit des Systems zu verbessern, indem sichergestellt wird, dass wichtige Wartungsaufgaben auf den Datenträgern des Servers ausgeführt werden. Wenn „Perform volume maintenance tasks“ aktiviert ist, werden wichtige Wartungsaufgaben wie das Defragmentieren von Datenträgern automatisch ausgeführt, was dazu beitragen kann, die Leistung des Systems zu verbessern und Probleme mit fehlerhaften Sektoren auf den Datenträgern zu vermeiden. Die Verwendung von „Perform volume maintenance tasks“ kann daher dazu beitragen, die Leistung und Zuverlässigkeit des Systems zu verbessern.

Kerberos für SQL konfigurieren.

cmd.exe starten und folgende Befehle mit den geänderten Werten ausführen.
Im Beispiel heiß mein SQL Server „SQLSRV01“ und die Instanz „SQL01“.
Wir die Instanz mit dem Default Namen MSSQLSERVER betrieben muss der zweite Befehl nicht eingegeben werden.
setspn -s MSSQLSvc/sqlsrv01.contoso.com:1433 contoso\sqlserverserviceaccount
setspn -s MSSQLSvc/sqlsrv01.contoso.com:sql01 contoso\sqlserverserviceaccount
Infos: https://docs.microsoft.com/

Die Konfiguration von Kerberos für SQL auf einem Windows Server, auf dem SQL Server läuft, kann dazu beitragen, die Sicherheit des Systems zu erhöhen, indem sichergestellt wird, dass nur autorisierte Benutzer auf die Datenbanken des Servers zugreifen können. Kerberos ist ein Netzwerkauthentifizierungsprotokoll, das auf dem Verfahren der geheimen Schlüssel-Verschlüsselung basiert. Wenn Kerberos für SQL konfiguriert ist, werden die Anmeldeinformationen der Benutzer verschlüsselt übertragen, was es Unbefugten erschwert, diese Informationen abzufangen und zu nutzen, um auf die Datenbanken des Servers zuzugreifen. Die Verwendung von Kerberos für SQL kann daher dazu beitragen, die Sicherheit des Systems zu erhöhen.

IP Adresse zuweisen

Dem SQL Server eine IP Adresse zuweisen. Damit der SQL Server mit der eigenen IP Adresse angesprochen werden kann, muss diese zuerst auf der Netzwerkkarte des Betriebsystems hinzugefügt werden. Danach kann die Änderung im SQL Server Configuration Manager durchgeführt werden.
Infos: http://woshub.com/ & https://support.huawei.com/

Die Zuweisung einer eigenen IP-Adresse für den SQL Server-Dienst auf einem Windows Server kann dazu beitragen, die Leistung und Zuverlässigkeit des Systems zu verbessern, indem sichergestellt wird, dass der SQL Server-Dienst nicht durch andere Netzwerkaktivitäten beeinträchtigt wird. Wenn der SQL Server-Dienst eine eigene IP-Adresse besitzt, kann er auf dedizierte Netzwerkressourcen zugreifen und somit besser auf Anfragen von Clients reagieren, was die Leistung verbessert. Die Zuweisung einer eigenen IP-Adresse kann außerdem dazu beitragen, die Netzwerkkonfiguration zu vereinfachen und Probleme bei der Fehlerbehebung zu minimieren.

SQL Konfiguration

Nach der SQL Server Installation empfiehlt es sich gleich das aktuelle Update zu installieren.
Das aktuelle Update findet man unter https://sqlserverbuilds.blogspot.com/.
Das Management Studio bei der Gelegenheit auch gleich (auf dem Admin-Client) installieren.

SQL Server Configuration Manager

TCP Port jeder Instanz auf 1433 stellen

SQL Server Configuration Manager starten und den TCP Port jeder Instanz auf 1433 stellen. Das funktioniert nur wenn jede SQL Instanz eine eigener IP Adresse verwendet. Microsoft empfiehlt immer einen nicht default Port zu verwenden, das kann aber zu Problemen bei Applikationen führen. Außerdem halte ich nichts von Security through obscurity.
Infos: https://docs.microsoft.com/

Es ist empfehlenswert, dass ein SQL Server auf den Port 1433 hört, da dieser Port der Standardport für SQL Server ist und von den meisten Clients und Anwendungen verwendet wird, um Verbindungen zu einem SQL Server-Dienst herzustellen. Wenn der SQL Server auf einem anderen Port als dem Port 1433 konfiguriert ist, müssen die Clients und Anwendungen explizit angeben, welchen Port sie verwenden möchten, um eine Verbindung zum SQL Server herzustellen. Dies kann zu Konfigurationsfehlern und Verbindungsproblemen führen und die Verwaltung des Systems erschweren. Daher ist es empfehlenswert, den SQL Server auf den Port 1433 zu konfigurieren, um Verbindungsprobleme und Konfigurationsfehler zu vermeiden.

Dienste anpassen

Es ist empfehlenswert, den SQL Server Browser-Dienst zu deaktivieren, wenn auf dem Server nur eine SQL-Instanz betrieben wird, da der SQL Server Browser-Dienst nur benötigt wird, wenn mehrere SQL-Instanzen auf dem Server ausgeführt werden. Der SQL Server Browser-Dienst ist dafür verantwortlich, Anfragen von Clients nach verfügbaren SQL Server-Instanzen auf dem Server zu verarbeiten und die Antworten an die Clients zu senden. Wenn auf dem Server nur eine SQL-Instanz betrieben wird, benötigt der SQL Server Browser-Dienst keine Anfragen von Clients zu verarbeiten und kann daher deaktiviert werden. Die Deaktivierung des SQL Server Browser-Dienstes kann dazu beitragen, die Sicherheit des Systems zu erhöhen, indem mögliche Angriffsflächen minimiert werden.

SQL Server Browser auf einem “single Instance” Server deaktivieren ansonsten auf auf Start Mode “Automatic” setzen und Services Starten.
Infos: https://www.mssqltips.com/

SQL Server Agent auf Start Mode “Automatic” setzen und Services Starten.

Min / Max Memory konfigurieren

Über die SQL Management Console, klicke im Objekt-Explorer mit der rechten Maustaste auf den Server und wähle Properties danach unter Memory, SQL Server Min / Max Memory, Min Memory auf min. 2048MB stellen. Wichtig ist immer, dass man RAM für SQL Server Integration Services, Analysis Services, Reporting Services und das Betriebssystem frei hält. Extended stored procedures, sp_OA calls und Linked Server Providers greifen direkt auf RAM zu und ignorieren diese Einstellung. Am Besten Memory:Available MB Performance Counter auf freien Speicher überwachen und Wert nach und nach erhöhen. Haben MIN und MAX den gleichen Wert kommt es zu großen Performance-Problemen.
Infos: https://docs.microsoft.com/

Es ist empfehlenswert, einen SQL Server mit einem Mindestwert für den Arbeitsspeicher von 2048MB zu konfigurieren, da dies in den meisten Fällen ausreichend ist, um sicherzustellen, dass der SQL Server genügend Arbeitsspeicher zur Verfügung hat, um die anfallenden Aufgaben zu erledigen. Der Mindestwert für den Arbeitsspeicher gibt an, wie viel Arbeitsspeicher der SQL Server-Dienst mindestens beim Starten benötigt. Wenn der SQL Server mit einem zu geringen Mindestwert für den Arbeitsspeicher konfiguriert ist, kann es dazu führen, dass der Dienst beim Starten nicht genügend Arbeitsspeicher zur Verfügung hat und daher nicht ordnungsgemäß funktioniert. Die Konfiguration des SQL Servers mit einem Mindestwert für den Arbeitsspeicher von 2048MB kann daher dazu beitragen, dass der Dienst ordnungsgemäß funktioniert und die Leistung des Systems verbessert wird.

Instant File Initialization konfigurieren

Berechtigungen für Instant File Initialization (IFS) muss die Berechtigung ‘Perform Volume Maintenance Tasks’ für den SQL Server Account aktiviert sein.
Infos: https://www.brentozar.com/

Instant File Initialization (IFI) ist eine Funktion in SQL Server, die dafür sorgt, dass neue Dateien, die von SQL Server erstellt werden, sofort initialisiert werden, anstatt dass der Prozess des Schreibens von Nullen auf die Dateien ausgeführt werden muss. Dies kann die Leistung verbessern, indem verhindert wird, dass SQL Server warten muss, bis die Dateien initialisiert wurden, bevor er damit arbeiten kann. IFI ist besonders nützlich, wenn SQL Server große Dateien erstellen muss, da der Prozess des Schreibens von Nullen auf die Dateien in solchen Fällen länger dauern kann und die Leistung beeinträchtigen kann. Die Verwendung von IFI kann daher dazu beitragen, die Leistung von SQL Server zu verbessern.

TempDB konfigurieren

TempDB Konfiguration. Microsoft empfiehlt, dass die Anzahl der tempdb data files der Anzahl der logischen CPU Kerne (max aber 8) entspricht. Bestehenden Festplattenplatz ausnützen und DB bereits im Vorhinein groß planen.
Beispiel: 4-8 TembDB’s mit je 10GB
Infos: https://www.brentozar.com/

Es ist empfehlenswert, die Anzahl der TempDB-Datenbanken auf einem SQL Server entsprechend der Anzahl der CPU-Kerne einzustellen, da dies dazu beitragen kann, die Leistung des Systems zu verbessern, indem sichergestellt wird, dass genügend TempDB-Datenbanken vorhanden sind, um die parallelen Arbeitsauslastungen von SQL Server zu unterstützen. Die TempDB-Datenbank wird von SQL Server verwendet, um temporäre Daten und Objekte zu speichern, die während der Verarbeitung von Abfragen anfallen. Wenn die Anzahl der TempDB-Datenbanken nicht ausreichend ist, um die parallelen Arbeitsauslastungen von SQL Server zu unterstützen, kann es dazu führen, dass der Server warten muss, bis TempDB-Datenbanken frei werden, was die Leistung beeinträchtigen kann. Die Konfiguration der Anzahl der TempDB-Datenbanken entsprechend der Anzahl der CPU-Kerne kann daher dazu beitragen, die Leistung des Systems zu verbessern.

Max Degree of Parallelism (MAXDOP) konfigurieren

Max Degree of Parallelism ist die Anzahl der physischen Cores in einer NUMA Node (Prozessor) oder weniger. Wert 1 nur bei SharePoint SQL-Instanz verwenden.
Infos: http://www.sqlskills.com/

Es ist empfehlenswert, bei der Konfiguration von Max Degree of Parallelism (MAXDOP) die Anzahl der physischen Cores in einer NUMA-Node (Prozessor) oder weniger einzustellen, da dies dazu beitragen kann, die Leistung des Systems zu verbessern, indem sichergestellt wird, dass SQL Server nicht mehr parallel ausgeführte Abfragen als die Anzahl der verfügbaren Cores zulässt. MAXDOP gibt an, wie viele parallele Abfragen von SQL Server ausgeführt werden dürfen. Wenn MAXDOP zu hoch eingestellt ist, kann es dazu führen, dass SQL Server mehr parallel ausgeführte Abfragen verarbeitet, als die Anzahl der verfügbaren Cores unterstützen kann. Dies kann dazu führen, dass der Server warten muss, bis Cores frei werden, was die Leistung beeinträchtigen kann. Die Konfiguration von MAXDOP entsprechend der Anzahl der physischen Cores in einer NUMA-Node (Prozessor) oder weniger kann daher dazu beitragen, die Leistung des Systems zu verbessern.

Cost Threshold for Parallelis konfigurieren

Für Cost Threshold for Parallelism gibt es keine richtige oder falsche Einstellung, 5 ist aber eindeutig ein zu kleiner Wert der nur für einfache OLTP Applikationen ausreicht. Bei einem neuen System mit neuer Hardware kann die Einstellung auf Wert 50 gesetzt werden.
Infos: https://www.brentozar.com/

Der Cost Threshold for Parallelism ist eine Einstellung in SQL Server, die festlegt, ab welchem Schwellenwert eine Abfrage parallel ausgeführt werden sollte, um die Leistung zu verbessern. Dieser Schwellenwert wird in „Kostenpunkten“ gemessen und basiert auf der Schätzung des SQL Server-Optimierers für die Kosten einer Abfrage. Wenn die geschätzten Kosten einer Abfrage den festgelegten Schwellenwert überschreiten, wird die Abfrage parallel ausgeführt, um die Leistung zu verbessern. Die richtige Einstellung für den Cost Threshold for Parallelism hängt von vielen Faktoren ab und es gibt keinen einzigen „richtigen“ Wert, der für alle Situationen geeignet ist. Es ist wichtig, dass Sie diese Einstellung entsprechend Ihrer spezifischen Anforderungen und Ihrer Hardware-Konfiguration anpassen. Ein guter Ausgangswert könnte beispielsweise 50 sein, aber Sie sollten diesen Wert möglicherweise anpassen, wenn Sie feststellen, dass Ihr SQL Server nicht optimal ausgelastet ist oder wenn bestimmte Abfragen langsam ausgeführt werden.

Datenbank Autogrowth konfigurieren

Datenbank Konfiguration. 100MB Autogrowth für alle Data und Log Files (nicht in % lassen).
Wenn das Wachstum bekannt ist, am Besten diesen Wert angeben. 100MB ist nur ein allgemeiner Richtwert.
Infos: https://docs.microsoft.com/

Es ist in der Regel besser, die Autogrowth-Einstellung für SQL-Datenbanken in Bytes anstatt in Prozent festzulegen, da es in vielen Fällen zu unerwarteten Ergebnissen führen kann, wenn die Autogrowth-Einstellung in Prozent festgelegt wird. Wenn die Autogrowth-Einstellung in Prozent festgelegt wird und die Datenbank zum Beispiel auf einem Laufwerk mit begrenztem Speicherplatz liegt, kann es passieren, dass die Datenbank nicht genügend Speicherplatz zum Wachsen hat, wodurch die Datenbank fehlerhaft werden kann. Wenn die Autogrowth-Einstellung hingegen in Bytes festgelegt wird, können Sie genau festlegen, wie viel Speicherplatz die Datenbank bei Bedarf hinzugewinnen soll, wodurch die Wahrscheinlichkeit von Fehlern verringert wird. Ein Wert von 100 MB ein guter Ausgangswert, aber Sie sollten diesen Wert möglicherweise anpassen, je nachdem wie schnell die Datenbank wächst und wie viel Speicherplatz auf dem Laufwerk verfügbar ist.

Ende

Nachdem der SQL Server erfolgreich installiert und konfiguriert wurde, ist es jetzt wichtig, regelmäßig die Leistung und Verfügbarkeit des Servers zu überwachen und gegebenenfalls die Einstellungen anzupassen, um sicherzustellen, dass der Server optimal ausgeführt wird. Es ist auch wichtig, regelmäßig Sicherungen der Datenbanken auf dem Server durchzuführen, um im Falle eines Datenverlustes die Daten wiederherstellen zu können. Insgesamt ist der SQL Server nun bereit, um Daten zu speichern und zu verarbeiten und kann für verschiedene Anwendungen verwendet werden.

4.8 / 5. 9

Dieser Beitrag hat 3 Kommentare

  1. Hotohori

    Mir fehlt hier die Max Memory Einstellung, hast du die hier absichtlich nicht erwähnt?

    Danke

    1. Johannes

      Max Memory definiere ich nie da ich keine weitere Software parallel neben SQL installiere.
      Man könnte jetzt etwas RAM für das OS reservieren. Meiner Meinung funktioniert die Speicherverwaltung des SQL Servers aber so gut, dass dieser das selbst regelt.

  2. Rene

    Die Liste hat mir wirklich geholfen um mich auf die wichtigsten Schritte bei der Installation von SQL Server vorzubereiten. Besonders hilfreich fand ich die detaillierten Beschreibungen. Dank dieses Artikels fühlte ich mich gut vorbereitet und konnte die Installation ohne große Probleme durchführen. Vielen Dank für diesen nützlichen Beitrag!

Schreibe einen Kommentar