Absicherung spielt in der Welt von SQL Server eine essentielle Rolle. SQL Server Downtimes können immer auftreten und meist genau dann, wenn man sie am Wenigsten gebrauchen kann. Daher ist es umso wichtiger, regelmäßige Backups der SQL Server Umgebung durchzuführen und sich abzusichern, dass keine Daten verloren gehen. Mittels T-SQL Befehlen können relativ simpel Backups durchgeführt werden. Wir stellen Ihnen in diesem Artikel einen geeigneten T-SQL Befehl vor, der Informationen zur Prozessdauer von Backups und Wiederherstellungsvorgängen sammelt und veranschaulicht.
Der Standardbefehl zur Sicherung oder Herstellung eines Backups der Datenbank wäre in diesem Fall: WITH STATS. Im SQL Server Management Studio würden entsprechende Statusmeldungen zum Sicherungsvorgang in voranschreitenden Prozentsätzen aufgelistet werden.
BACKUP DATABASE wideworldimporters TO DISK = 'c:\temp\wwi.bak' WITH STATS;
Das SQL Server Management Studio ermöglicht uns jedoch dynamische Verwaltungsansichten, die uns Informationen zu Sicherungs- & Wiederherstellungsschätzungen zusammenstellen. Darunter fallen auch Zeiteinschätzungen hinsichtlich der Dauer des Sicherungsprozess. Zusätzlich können Sie mithilfe des folgenden Skripts erforderliche Informationen zum jeweiligen Prozess einholen:
SELECT SERVERPROPERTY('ServerName') AS [Instance],
reqs.session_id,
sess.login_name,
reqs.command,
CAST(reqs.percent_complete AS NUMERIC(10, 2)) AS [Percent Complete],
CONVERT(VARCHAR(20), DATEADD(ms, reqs.estimated_completion_time, GETDATE()), 20) AS [Estimated Completion Time],
CAST(reqs.total_elapsed_time / 60000.0 AS NUMERIC(10, 2)) AS [Elapsed Minutes],
CAST(reqs.estimated_completion_time / 60000.0 AS NUMERIC(10, 2)) AS [Estimated Remaining Time in Minutes],
CAST(reqs.estimated_completion_time / 3600000.0 AS NUMERIC(10, 2)) AS [Estimated Remaining Time in Hours],
CAST((
SELECT SUBSTRING(text, reqs.statement_start_offset/2,
CASE
WHEN reqs.statement_end_offset = -1
THEN 1000
ELSE(reqs.statement_end_offset-reqs.statement_start_offset)/2
END)
FROM sys.dm_exec_sql_text(sql_handle)) AS VARCHAR(1000)) AS [SQL]
FROM sys.dm_exec_requests AS reqs
JOIN sys.dm_exec_sessions AS sess ON sess.session_id = reqs.session_id
WHERE command IN('RESTORE DATABASE', 'BACKUP DATABASE');
Das Skript gibt die folgenden Informationen zurück:
Man muss jedoch festhalten, dass die dynamischen Verwaltungsansichten nicht auf allen SQL Server Versionen einwandfrei funktionieren. Bisherige Tests auf SQL Server 2008 R2 und der Windows Version sind erfolgreich gewesen.
Der einschlägige Vorteil in der Informationsbeschaffung zur Dauer von Backup-Prozessen ist die Planungssicherheit. Geschäftskritische Anwendungen können so besser eingeschätzt und geplant werden. Unvorhergesehene Situationen werden entschärft und beeinträchtigen nicht die Serverperformance und Hochverfügbarkeit. Server Downtimes können entsprechend einkalkuliert werden, ohne mit großen Verlusten rechnen zu müssen. Dies bietet die notwendige Transparenz in der Arbeit mit SQL Server.
Kontaktieren Sie uns gerne über das
Kontaktformular und vereinbaren ein unverbindliches
Beratungsgespräch mit unseren Berater:innen zur
Bedarfsevaluierung. Gemeinsam optimieren wir Ihre
Umgebung und steigern Ihre Performance!
Wir freuen uns auf Ihre Kontaktaufnahme!