Housekeeping einer Azure SQL DB Managed Instance

Ich habe mich heute etwas intensiver mit der „neuen“ Azure SQL Database – Managed Instance beschäftigt und dabei ging es auch um das Housekeeping, welches man in regelmäßigen Abständen auf allen SQL Servern durchführen sollte. Überlicherweise nehme ich hierfür die Skripte von Ola Hallengren, welche in regelmäßigen Abständen aktualisiert und erweitert werden. Aufgrund der weit verbreiteten, weltweiten Nutzung kann man hier auch davon ausgehen, dass die Funktionalität und Stabilität absolut produktionswürdig ist und können daher ohne Bedenken auch in Produktionsumgebungen eingesetzt werden.

Für einen Workshop und natürlich aus eigenem Interesse habe ich einen einfachen Weg gesucht, wie ich das Housekeeping in einer Managed Instance realisieren kann, daher habe ich einfach nur das normale Skript von der Webseite runtergeladen und in das SQL Management Studio eingefügt. Kurz überprüft, ob die Einstellungen in dem Skript valide sind und ausgeführt.

Zu meinem Erstaunen lief das Skript ohne Probleme einfach durch und meldete eine erfolgreiche Ausführung, ein kurzer Blick in die SQL Server Agent Jobs brachte die nächste Überraschung da die zu erstellenden Jobs auch tatsächlich vorhanden waren. Ok, die Backup-Jobs fehlten, aber darum brauche ich mich in einer Managed Instance nicht zu kümmern, da dies automatisch erfolgt.

Managed Instance - Housekeeping - Ola Hallengren - SQL Server Agent Jobs

Als ich jetzt auch noch die Jobs nacheinander gestartet hatte und diese alle einwandfrei durchliefen, war ich nahezu platt. Also ich kann die Ola Hallengren Housekeeping Jobs nur empfehlen, sowohl onprem, als auch in irgendeiner virtuellen Maschine oder eben in der Azure SQL Database Managed Instance! Beim Schreiben dieses Beitrages habe nocheinmal direkt in das Skript geschaut, ob es irgendeine „Magic“ gibt, die dafür sorgt, dass die Backup-Jobs nicht angelegt werden und tatsächlich hat Ola hier großartige Arbeit geleistet. Wenn man sich dann auch die Dokumentation auf der Webseite anschaut, wird man feststellen, dass er tatsächlich auch auflistet, dass die Managed Instance offiziell unterstützt wird.

Also worauf wartet ihr, nutzt die Ola Hallengren Housekeeping Jobs (aka Maintenance Jobs) auch für eure SQL Server!

Björn arbeitet in Hamburg als Datenbank-Administrator und Head of Competence für MS SQL und mySQL. Er nimmt regelmäßig an den PASS Regionalgruppen Treffen in Hamburg, den Veranstaltungen der PASS wie SQLSaturday und SQLGrillen teil und er organisiert in Hamburg das Azure Meetup. Er interessiert sich neben den Themen rund um den SQL Server, Powershell und Azure für Science-Fiction, Snowboarden, Backen 😉 und Radfahren.

dbatools – Migration der SQL Agent Backup Jobs

Man kann denken was man will, aber manchmal muss man über seinen Schatten springen… in der Regel bin ich ein Verfechter des SQL Server eigenen Backups, egal ob Backup to Disc, Backup to URL oder Backup to NetworkShare, aber hier musste ich (leider) nachgeben und die Sicherung mittels 3rd-Party-Tools einrichten. Gesagt… getan…

Bei dem Kunden hatten wir sowieso schon alles auf 3rd-Party-Backup umgestellt, aber nicht auf Backup-Server initiertes Sicherungen, sondern SQL Server initiert. Der SQL Server Agent startet also das jeweilige Backup als Kommandozeilen-Aufruf. Hierzu musste ich also die Sicherungsjobs von einem existierenden Server kopieren und anpassen, sowie alle dazugehörigen SQL Server Objekte. Gestartet habe ich mittels „Create Objects to NewQuery“, erhielt aber die Fehlermeldung, dass die Mail-Komponente bzw Empfänger noch existiert bzw konfiguriert ist. Also musste ich erst die SQL-Mail-Konfiguration übernehmen, hierzu auch noch die Operator übernehmen und wenn wir schon beim Mailing sind, dann kann ich die von Brent Ozar empfohlenen SQL Agent Alerts auch gleich mit migrieren…

dbatools - die Powershell Modulsammlung für den DBA

verwendete Powershell Module – dbatools

Macht euch mal kurz Gedanken dazu, wie man die Konfiguration von SQL-Mail, Operatoren und Custom-Alerts ohne großen Aufwand von einem SQL Server auf den anderen migrieren kann, also ich meine mit Bordmitteln… das ist zwar nicht wirklich viel Aufwand, aber doch etwas mehr als 5 Minuten. Also was liegt näher als sich intensiver mit den dbatools zu beschäftigen…
Mittels „Copy-SqlDatabaseMail“ kann man die SQLMail-Konfiguration übernehmen, mit „Copy-SqlOperator“ die eingerichteten Operatoren migrieren, weiter geht es mit „Copy-SqlAlert“ und zum Schluss noch die Jobs kopieren. Ist doch gar nicht so viel 😉

Copy-SqlDatabaseMail -Source SQLServer01 -Destination SQLServer02
Copy-SqlOperator -Source SQLServer01 -Destination SQLServer02
Copy-SqlAlert -Source SQLServer01 -Destination SQLServer02
Copy-SqlJob -Source SQLServer01 -Destination SQLServer02 -Jobs  Full-Backup, TLog-Backup

Also ganze 4 Zeilen Powershell Code um mir die Arbeit zu erleichtern, auch dank der Vereinheitlichung der Parameter innerhalb von dbatools ist auch die Parametrisierung der einzelnen Befehle eine sehr einfache Sache und schnell und unkompliziert zu erledigen. Man kann die Nutzung von dbatools nur jedem empfehlen!

Björn arbeitet in Hamburg als Datenbank-Administrator und Head of Competence für MS SQL und mySQL. Er nimmt regelmäßig an den PASS Regionalgruppen Treffen in Hamburg, den Veranstaltungen der PASS wie SQLSaturday und SQLGrillen teil und er organisiert in Hamburg das Azure Meetup. Er interessiert sich neben den Themen rund um den SQL Server, Powershell und Azure für Science-Fiction, Snowboarden, Backen 😉 und Radfahren.