Azure SQL VM – keine Möglichkeit den Plattenplatz zu konfigurieren

Ein Kunde hatte mich die letzten Tage gebeten, ihn bei der Optimierung eines SQL Servers auf einer Azure VM zu unterstützen. Der Kunde hatte immer mal wieder leichte Performance Probleme mit dem SQL Server, der Applikation Hersteller bzw Betreuer wollte oder konnte nicht mehr sagen bzw helfen. Von dort erhielten der Kunde erst einmal nur die Aussage, man empfehle für die DATA-Platten des SQL Servers eine Latenz von 5ms… ok, in Azure lässt sich dies offiziell nur mit ULTRA Disks erreichen. Ich möchte hier in diesem Beitrag nicht unbedingt auf das Wie eingehen, sondern nur auf einen Fehler, der mir im Rahmen der Analysen aufgefallen ist.

Erst einmal zur Erläuterung, ich habe mit dem Kunden gesprochen und ihm vorgerechnet was es kostet den Server mit 2 TB Ultra-Disks auszustatten und ob es nicht vielleicht sinnvoller und zielführender ist, den SQL Server auf “Herz und Nieren” zu prüfen, zu optimieren (auch die Applikation bzw deren T-SQL) und im letzten Schritt notfalls doch auf Ultra-Disks zu gehen.

Der Kunde war einverstanden und gemeinsam haben wir den SQL Server einem Review unterzogen, auch wenn die Marketplace-Images von Microsoft (Danke an das Produktteam!) schon sehr gut konfiguriert sind, lässt sich doch noch das ein oder andere anpassen.

Azure SQL VM und die Data-Disks

Wenn man den Empfehlungen zu Azure SQL in einer virtuellen Maschine folgt, dann kann man dort in den Empfehlungen lesen:

Stripe multiple Azure data disks using Storage Spaces to increase I/O bandwidth up to the target virtual machine’s IOPS and throughput limits.

https://docs.microsoft.com/en-us/azure/azure-sql/virtual-machines/windows/performance-guidelines-best-practices-storage

In einem ersten Anlauf haben wir die 1TB Platte durch mehrere kleine Platten ersetzt, um den maximalen Throughput von 200MB auf 625MB zu erhöhen. Das hat soweit auch ohne Downtime funktioniert, der Kunde ist bisher sehr glücklich. Aber im Zuge dieser Arbeiten bin ich eben auch auf eine Meldung im Azure Portal an dieser virtuellen Maschine bzw der SQL Server Konfigurationsübersicht gestossen, mit der ich im ersten Moment nichts anfangen konnte und Google auch keinerlei Hilfe brachte.

Im Azure Portal gibt es die Möglichkeit für alle SQL Server innerhalb einer Azure VM entsprechend mehrere Extensions auszurollen, die den Administrator dabei unterstützen sollen, die VM bzw den SQL Server über Powershell, Azure CLI oder das Portal zu administrieren und deren Daten in Logs und Metrics darzustellen. Hierzu nutzt Microsoft unter anderem den “SQL Server IaaS Extension Query Service” oder “SQL Server IaaS Agent extension”, beide sammeln Daten aus der virtuellen Maschine und dem SQL Server und stellen diese nutzerfreundlich im Portal dar. Leider war das bei diesem Kunden und dieser VM nicht zu 100% verfügbar, wie der folgende Screenshot zeigt.

Azure SQL VM im Portal leider ohne Anzeige der verfügbaren und belegten Plattenkapazitäten

Auch in der weiteren Übersicht “Configure” waren keine Daten zum Storage ermittelbar, obwohl alle Extensions auf dem Server ausgerollt waren und auch nach einem/mehreren Reboots keinerlei Daten anzeigten. Also bin ich auf die Suche nach der Ursache gegangen…

Extension-Log und fn_trace_gettable

Wie man der Microsoft-Dokumentation entnehmen kann, gibt es unterschiedliche Modis, für unterschiedliche Anforderungen und natürlich kann man hier auch entnehmen, dass es ein lokales Errorlog gibt, welches man unter Umständen zur Fehlersuche nutzen kann. Bei diesem Errorlog handelt es sich um ein XE-File und ein Tracefile, beide nicht mit dem Notepad sondern nur SQL Server Management Studio lesbar… also blieb nichts anderes, als kurzerhand mit einer T-SQL Systemfunktion auf das Tracefile zuzugreifen, um festzustellen, dass der Systemuser anscheinend keinerlei oder zu wenige Berechtigungen hat. Normalerweise befindet sich die Extension direkt auf dem C-Laufwerk im Verzeichnis C:\SQLIaaSExtension, so dass man diesen Pfad in der SQL Abfrage entsprechend nutzen muss.

SELECT * FROM fn_trace_gettable('C:\SQLIaaSExtension\Log\log.trc', default);  
GO  

Durch die Ausführung dieses T-SQL Statements zum Auslesen des Extension-Logfiles, erhielt ich unter anderem die folgende Zeile :

alter server role [sysadmin] add member [NT Service\SQLIaaSExtensionQuery]

Bei der Suche nach dem User musste ich dann feststellen, dass der Kunde diesen User – warum auch immer – gelöscht hat (später stellte ich fest, dass dies anscheinend nicht “per accident” passiert ist, sondern bewusst, denn auf anderen SQL Servern in Azure fehlt der User ebenfalls)

USE [master]
GO

/****** Object:  Login [NT SERVICE\SqlIaaSExtensionQuery]    Script Date: 5/10/2021 3:35:08 PM ******/
DROP LOGIN [NT SERVICE\SqlIaaSExtensionQuery]
GO

/****** Object:  Login [NT SERVICE\SqlIaaSExtensionQuery]    Script Date: 5/10/2021 3:35:08 PM ******/
CREATE LOGIN [NT SERVICE\SqlIaaSExtensionQuery] FROM WINDOWS WITH DEFAULT_DATABASE=[master], DEFAULT_LANGUAGE=[us_english]
GO

ALTER SERVER ROLE [sysadmin] ADD MEMBER [NT SERVICE\SqlIaaSExtensionQuery]
GO

Testweise habe ich diesen User erneut angelegt, berechtigt und im Azure Portal überprüft, ob es eine Veränderung in den Ansichten gibt… Ja, die SQL Server IaaS Agent Extension kann nun wieder auf den SQL Server zugreifen und die notwendigen oder relevanten Daten auslesen.

Azure SQL VM im Portal mit Anzeige der verfügbaren und belegten Plattenkapazitäten

128 Tage auf neuen Wegen

Nun bin bereits unglaubliche 128 Tage auf eben diesen neuen Wegen unterwegs, zu denen ich im Mai aufgebrochen bin! Was hat sich seit dem 01. Mai 2019 ereignet? Was ist anders? Was macht es besonders? Was gefällt mir nicht? Ich möchte euch in diesem Blog-Beitrag einen Einblick geben in meine ersten Wochen unter “neuer Flagge” und mit neuen (anderen) Herausforderungen gemeinsam mit neuen Kollegen.

Gemeinsam neue Herausforderungen meistern

Einer der größten Unterschiede ist definitiv die Kommunikation – in den letzten 12 Jahren habe ich bei Atos (ursprünglich Atos Origin) als SQL Datenbank-Administrator (vom Junior zum Senior bzw Team Lead) gearbeitet… zuletzt bestand Atos aus zahlreichen Legal Entities und rund 120.000 Mitarbeitern weltweit… jetzt bei Kramer&Crew arbeite ich bei einem Unternehmen mit ~140 Mitarbeiter… da sind schon die Kommunikationswege grundsätzlich unterschiedlich und damit auch die Wege und Arten Entscheidungen herbeizuführen. Dies empfinde ich auch als gravierenden Vorteil, man ist viel agiler unterwegs und kann dem Kunden schneller und unkomplizierter helfen.

Auch das Aufgabengebiet und damit die Herausforderungen sind stark unterschiedlich – da ich im Tagesgeschäft noch nicht zu 100% ausgelastet bin, was vielfältige Gründe hat, wie zum Beispiel der Vertrieb, der mich (und meine Kenntnisse) erst langsam an den Kunden, das bietet mir aber auch die Möglichkeit mich mit neuen oder anderen Themen zu beschäftigen. So schaue ich meinem Kollegen – Martin Gudel – sehr gerne über die Schulter, dieser beschäftigt sich sehr intensiv mit Office 365 (Power-Apps, Flows und Kombinationen) und bietet unseren Kunden sehr individuelle Lösungen für deren Anforderungen, alles sehr spannende Tätigkeitsfelder!!!

Gerade die neuen Technologien wie Nutanix Hyper Converged Infrastrukturen waren anfänglich komplett neu und ich musste mich erst einarbeiten, aber egal wenn ich fragte, alle waren sofort bereit mir gemeinsam an einer Lösung zu arbeiten, mir Antworten auf meine Fragen zur Seite zu stehen. Hier gibt es immer hilfreiche Kollegen, die versuchen so gut es zu unterstützen, gerade die agile Arbeitsweise und das entspannte Arbeitsklima lässt mich jeden Morgen gerne zu Arbeit gehen!

neue kreative Problemlösungen

Auch war ich vor einigen Tagen bei einem Kunden, der für seine Applikation eine neue Lösung bauen möchte, von der Ausgangssituation über Phase 1 und Phase 2 zu einer hoch verfügbaren, skalierenden SQL Server Umgebung – onprem !!! Hier ergaben sich aus einer Diskussion mit Martin auch sehr interessante und vielversprechende Lösungsansätze, die ich glücklicherweise erst einmal für mich selber aufbauen und testen konnte. In meiner neuen Position ergeben sich die Möglichkeiten solche großartigen, innovative Lösungen für unseren Kunden zu erdenken, testen und dann ggfs präsentieren.

Oder Kunden einfach von der Genialität einer Microsoft Azure Cloud zu überzeugen, dass dem Kunden für seine Anforderungen zahlreiche unterschiedliche Möglichkeiten zu seiner perfekten Lösung zur Auswahl stehen und er selber entscheiden kann, was für Ihn die optimalste Lösung ist. Sei es der einfache “Lift&Shift”-Ansatz von virtuellen Maschinen, die Kombination von verschiedenen Cloud-Services zu einer Gesamt-Lösung oder eine hybride Lösung. Es bieten sich so viele, neue spannende und interessante Aufgabengebiete und Möglichkeiten…

gute Basis durch gemeinsame Arbeit

So viel kreative Freiheit hatte ich bei Atos leider nicht, hier ging es zum Schluss leider nur noch um Kosten, Effizienzen und wie man Aufgaben standardisieren könnte. Durch diese andere Aufgabenstellung habe ich auch viel gelernt, gerade was Automatisierung mittels Powershell angeht, dies bringt mir auch bei meiner neuen Arbeit sehr viele Vorteile. Auch die Standardisierung von SQL Server Installationen in unterschiedlichen Größen und Ausprägungen von Umgebungen hilft hier sehr weiter, da sie eine gewisse Effizienz mit sich bringt.

In sofern sehe ich mich – dank meiner Vorkenntnisse und Kenntnisse – sehr gut auf die neuen Aufgaben für die unterschiedlichen Kunden einer Kramer&Crew gewappnet. Hier gilt vor allem – auch wenn ich mich wiederholen sollte – der Dank meinen ehemaligen Hamburger Kollegen, die mich immer unterstützt haben und gemeinsam mit mir an diesen Herausforderungen gearbeitet haben, gemeinsam konnten wir viele Hürden und Baustellen bewerkstelligen und voran kommen, wenn auch manchmal die ursprünglichen Wege und Arbeiten komplett wieder über den Haufen geworfen werden mussten, um einen neuen Weg zu beschreiten, der uns dann doch zum Ziel gebracht hat.

mit viel Energie zu neuen Abenteuern

Diese Zusammenarbeit ist auch bei Kramer&Crew sehr deutlich zu spüren und hat mich sehr fasziniert, denn hier haben alle ein gemeinsames Ziel. Auch wenn man nicht unbedingt jeden Tag mit denselben Kollegen zusammen arbeitet oder man in unterschiedlichen Kunden-Umfeldern oder Projekten arbeitet, so haben alle eins spürbar gemeinsam… es geht immer um das Wohl des Kunden! Alle wollen dem Kunden einen ausgezeichneten Service mit einem erfolgreichen Abschluss bieten… Ich fühle mich hier sehr wohl und hoffe auch viele spannende und innovative Kundenprojekte.