SQL Server DBA Diaries
Das Durchführen von Datenbanksicherungen ist eine der am häufigsten ausgeführten Aufgaben eines DBA. In den meisten Fällen ist das Wartungsfenster, das das DBA-Team zur Durchführung von Datenbankwartungsaktivitäten erhält, normalerweise kürzer. In den meisten Fällen laufen die Datenbankwartungsaufgaben über das festgelegte Fenster hinaus, und das Anwendungsteam beginnt sich darüber zu beschweren.
Selbst in unserer Umgebung kommt das Anwendungsteam normalerweise zurück und sagt: „Unsere kritischen Jobs werden in den nächsten Minuten beginnen. Wir sehen, dass ein Datenbanksicherungsprozess die meisten Ressourcen nutzt. Da es unsere Jobs beeinträchtigen kann, können Sie es bitte töten?“
Für sie ist es der Backup-Job, der jeden Tag läuft. Aber nur der DBA würde wissen, wie wertvoll eine Datenbanksicherung ist. Ich erinnere mich nicht, wie oft mir dieses zusätzliche Backup aus schwierigen Situationen geholfen oder mir das Vertrauen gegeben hat, mit einem riskanten Vorschlag fortzufahren.
Wenn jemand fragt, wie lange dieser Sicherungsauftrag ausgeführt wird oder wie viel Arbeit er bereits erledigt hat, war die beste Option in SQL Server 2000, die Ausgabe des Statistikparameters im Sicherungsskript zu überprüfen. Wenn jedoch jemand vergessen hat, den stats-Parameter in das Sicherungsskript aufzunehmen, gibt es keine Möglichkeit, den Status des Sicherungsabschlusses in SQL Server 2000 zu überprüfen.
Ab SQL Server 2005 hat sich dieses Verhalten jedoch geändert. Einer der vielen wunderbaren DMVs, die in SQL Server 2005 enthalten sind, ist sys.dm_exec_requests. Mit diesem DMV werden Status, Prozentsatz abgeschlossen usw. angezeigt. der Backup-Prozess (für diese Angelegenheit jeder SQL-Befehl) kann leicht verfolgt werden. Hier ist das Skript, das genau das Gleiche tut.
SELECT A.NAME,B.TOTAL_ELAPSED_TIME/60000 AS ,B.ESTIMATED_COMPLETION_TIME/60000 AS ,B.PERCENT_COMPLETE as ,(SELECT TEXT FROM sys.dm_exec_sql_text(B.SQL_HANDLE))AS COMMAND FROM MASTER..SYSDATABASES A, sys.dm_exec_requests BWHERE A.DBID=B.DATABASE_ID AND B.COMMAND LIKE '%BACKUP%' order by percent_complete desc,B.TOTAL_ELAPSED_TIME/60000 desc
Ich weiß, dass die meisten von uns schon sehr lange die eine oder andere Version dieses Skripts verwenden. Da dieses Skript David Rummel kürzlich geholfen hat, die Sicherung einer großen Datenbank zu verfolgen, dachte ich, dies könnte jemand anderem irgendwo helfen.