SQL-Server prüfen
Prüfung der SQL-Server Umgebung
Eine regelmäßige Überprüfung der SQL-Server Umgebung ist entscheidend, um einen stabilen Betrieb sicherzustellen. Diese Anleitung beschreibt die wichtigsten Punkte, die geprüft und angepasst werden sollten.
1. Grundlegende Überprüfungen
Arbeitsspeicher-Auslastung:
Öffnen Sie den Task-Manager und prüfen Sie die Speicherauslastung.
Optimal: Unter 90 %
Kritisch: Ab 94 %
Festplattenspeicher:
Öffnen Sie den Explorer und prüfen Sie, ob keine Festplatte voll ist.
Empfehlung: Mindestens 10-15 % freien Speicherplatz sicherstellen.
2. SQL-Server Konfiguration
Benötigt: Microsoft SQL Server Management Studio (SSMS)
SQL-Server Einstellungen öffnen:
Rechtsklick auf den SQL-Server im Objekt-Explorer und auf Eigenschaften klicken.
Wichtige Tabs prüfen und anpassen:
Tab „Memory“:
Wert bei „Maximum server memory (in MB)” prüfen.
Der Wert sollte kleiner sein als der maximale Arbeitsspeicher des Servers.Beispiel: Bei einem Server mit 30 GB RAM sollte hier ca. 20 GB stehen.
Tab „Advanced“:
„Cost Threshold for Parallelism”: Standardwert ist 5.
„Max Degree of Parallelism”: Standardwert ist 0.
Dieser Wert bestimmt, wie viele CPUs für eine SQL-Operation verwendet werden dürfen.
Bei vielen parallelen Zugriffen auf die Datenbank kann ein Wert von 2 oder 4 getestet werden.
3. Datenbankkonfiguration
Datenbank-Einstellungen öffnen:
Rechtsklick auf die Datenbank und auf Eigenschaften klicken.
Wichtige Tabs prüfen:Tab „Files”:„Autogrowth / Maxsize”:Datendatei: Feste Größe von mindestens 1000 MB, unbegrenzt.Logdatei: Größe von 10 %, ebenfalls unbegrenzt.„Size (MB)” für Logdatei:Wenn diese sehr groß ist (z. B. >50 GB), deutet das auf Probleme mit dem Wartungsplan hin.Tab „Options”:„Recovery Model”:Full: Wartungsplan erforderlich, um übergroße Logdateien zu vermeiden.Simple: Speicherplatz in Logdateien wird nach Transaktionsende automatisch freigegeben.„Compatibility Level”:Muss zur installierten SQL-Server-Version passen.Werte prüfen:Auto Create Statistics: TrueAuto Shrink: FalseAuto Update Statistics: True
4. Wartungspläne
Auch wenn Sicherungen über Drittanbieter-Tools wie VEEAM erfolgen, ist ein Wartungsplan zur Datenbankpflege erforderlich. Die Hauptaufgaben eines Wartungsplans lassen sich in drei Kategorien einteilen:
Datenbanksicherung:
Vollständige Sicherung der Datenbank.Transaktionsprotokoll-Sicherungen (nur bei Recovery Mode = Full):
Regelmäßige Backups der Transaktionslogs.Datenbankpflege:
Optimierung und Aktualisierung von Indexen und Statistiken.
Prüfen der Wartungspläne
Sind Wartungspläne vorhanden?
Läuft der SQL Server Agent, der die Pläne ausführt?
Sicherstellen, dass keine „Shrink Database Task” Bausteine vorhanden sind. Diese verursachen unnötige Fragmentierung.
Beispiel: Wartungsplan für Datenpflege
Wichtige Bausteine:
Rebuild Index Task: Baut Indexe neu auf.
Update Statistics Task: Aktualisiert Index-Statistiken.
Hinweis: Reorganize Index Task ist nicht notwendig, wenn Rebuild genutzt wird.
Beispiel: Wartungsplan für Datenbanksicherung
Check Database Integrity Task: Stellt sicher, dass keine Datenbankfehler vorliegen.
Back Up Database Task:
„Verify backup integrity” aktivieren, um die Integrität der Backups sicherzustellen.
Beispiel: Wartungsplan für Transaktionslog-Backups
Wenn der Recovery-Mode Full ist, empfiehlt es sich, regelmäßige Transaktionslog-Backups (z. B. jede Stunde) zu erstellen.
Beispiel für vollständigen Wartungsplan (Recover-Mode Simple)
Check Database Integrity Task : Stellt sicher dass keine Fehler in der Datenbank vorhanden sind.
Back Up Database Task : Erstellt das vollständige Backup.
Rebuild Index Task : Baut die Indexe neu auf.
Update Statistics Task : Aktualisiert die Index-Statistiken.
Maintenance Cleanup Task : Löscht ältere Backup Dateien (beim Beispiel älter als 1 Woche).
Maintenance Cleanup Task 1 : Löcht ältere Wartungsplan Text Berichte.
History Cleanup Task : Löscht ältere Historie Einträge.
5. Erweiterte Prüfungen
Fragmentierung der Indexe prüfen
SELECT
S.name AS 'Schema',
T.name AS 'Table',
I.name AS 'Index',
DDIPS.avg_fragmentation_in_percent,
DDIPS.page_count
FROM sys.dm_db_index_physical_stats (DB_ID(), NULL, NULL, NULL, NULL) AS DDIPS
INNER JOIN sys.tables T ON T.object_id = DDIPS.object_id
INNER JOIN sys.schemas S ON T.schema_id = S.schema_id
INNER JOIN sys.indexes I ON I.object_id = DDIPS.object_id
AND DDIPS.index_id = I.index_id
WHERE DDIPS.database_id = DB_ID()
AND I.name IS NOT NULL
AND DDIPS.avg_fragmentation_in_percent > 0
AND DDIPS.page_count > 1000
ORDER BY DDIPS.avg_fragmentation_in_percent DESC;
Tabellen mit Fragmentierung >30 % deuten darauf hin, dass kein Wartungsplan vorhanden ist.
Index-Statistiken prüfen
SELECT
sp.stats_id,
stat.name,
last_updated,
rows,
rows_sampled
FROM sys.stats AS stat
CROSS APPLY sys.dm_db_stats_properties(stat.object_id, stat.stats_id) AS sp
WHERE last_updated IS NOT NULL
ORDER BY last_updated;
Tabellen mit älteren last_updated-Werten deuten auf fehlende Wartungspläne oder nicht ausgeführte Jobs hin.
Mit diesen Maßnahmen stellen Sie sicher, dass Ihre SQL-Server-Umgebung effizient, sicher und zuverlässig arbeitet.