Freitag, 14. November 2014

Logins und Serverrollen ermitteln

Grundlage aller Serveranalysen im Rahmen von Sicherheitsüberprüfungen ist eine Übersicht über die verfügbaren Logins (Server Prinzipale) und ihre Gruppenzugehörigkeit. War es seit der Version 2005 bis zur Version 2008 R2 noch möglich, mit Hilfe einer PIVOT-Abfrage die Zugehörigkeiten zu festen Serverrollen abzufragen, wurde mit Version 2012 die erstmals die Möglichkeit gegeben, eigene Serverrollen zu definieren. Wie dennoch eine Übersicht aller Berechtigungen ausgegeben werden kann, zeigen die folgenden Skripte im Zusammenhang mit einer umfangreichen Erläuterung zu den festen Serverrollen in Microsoft SQL Server.

Freitag, 7. November 2014

Rangfolge von Datentypen – Auswirkung auf Abfragen

In dem zuvor geschriebenen Artikel “Warum korrekte Datentypen für WHERE-Klauseln wichtig sind” wurde beschrieben, wie wichtig es ist, dass in den WHERE-Klauseln immer die richtigen Datentypen verwendet werden. Dieser Artikel zeigt, dass neben der Wahl der korrekten Datentypen bei Abfragen auch die Datentypen selbst eine wichtige Rolle für eine optimale Ausführung spielen.

Freitag, 24. Oktober 2014

SCAN, SEEK und PARALLELITÄT in REALITÄT

Dieser Beitrag ist nicht ganz ernst gemeint und soll nur eine Brücke schlagen zwischen der eher langweiligen Theorie bei der Abfrage von Daten und der Realität; also viel Spaß beim Lesen!

Donnerstag, 23. Oktober 2014

Größe und Verwendung aller Datenbanken ermitteln

Mit bestimmter Regelmäßigkeit werde ich beauftragt, vorhandene Microsoft SQL Server zu untersuchen, wenn zum Beispiel eine Performance-Analyse gemacht werden soll oder aber der Microsoft SQL Server einer generellen Untersuchung unterzogen werden soll. Das man dabei schon mal recht interessanteste Analysen vorfindet, habe ich bereits im Artikel “Berater / DBA / DEV – Dokumentation ist eine Hauptleistungspflicht!” behandelt. Mit diesem Artikel möchte ich eine Artikelreihe beginnen, in der ich ein paar meiner im Alltag verwendeten Skripte vorstelle und deren Interpretation beschreibe.

Montag, 6. Oktober 2014

PASS Summit 2014 – muss man da unbedingt hin?

Dieses Jahr ist für mich Premiere – ich werde nach dem MVP Summit im unmittelbaren Anschluss den PASS Summit 2014 besuchen. Der PASS Summit ist das jährliche Highlight für jeden begeisterten SQL Experten – sei es die Arbeit im Rahmen von Administration und  Entwicklung von und mit Microsoft SQL Server oder aber die stark an Funktionalität gewachsene BI-Sparte des Microsoft SQL Server. Sicherlich stellt sich für den einen oder anderen “Unentschlossenen” die Frage, muss man unbedingt da hin? Ich selbst habe mir die Frage auch häufig gestellt und bekenne mich mit einem klaren JEIN.

Samstag, 27. September 2014

Allokation von Datenseiten – Schritt für Schritt

Erneut eine interessante Fragestellung eines von mir sehr geschätzten Kollegen Johannes Curio (e | w). Beim experimentieren wurde eine neue Tabelle mit einem Datensatz erstellt. Bei der Überprüfung der alloziierten Datenseite kam die Frage auf, warum Microsoft SQL Server ausgerechnet Datenseite X und nicht Y für die Allokation verwendet. Ehrlich gesagt habe ich mir darüber noch nie Gedanken gemacht und fand es höchst interessant, dieser Fragestellung einmal nachzugehen.

Sonntag, 17. August 2014

ISNULL als Prädikat – SEEK oder SCAN?

Im Gespräch mit einem Kunden haben wir uns über NON SARGable Abfragen unterhalten. Dabei ist unter anderem auch ausgeführt worden, dass Funktionen grundsätzlich zu Index-Scans führen, da sie immer jede Zeile überprüfen müssen. Dieses Thema habe ich im Artikel “Optimierung von Datenbankmodellen – SARGable Abfragen” bereits ausführlich behandelt. Viele Funktionen arbeiten tatsächlich nach diesem Prinzip; dennoch ist z. B. die Arbeitsweise von ISNULL als Predikat davon abhängig, wie das Attribut in der Tabelle definiert wird.

Mittwoch, 30. Juli 2014

Aufsteigende Indexschlüssel – Performance Killer

Ein reißerischer Titel, oder? Aber tatsächlich ist für die Performance einer Datenbankanwendung das Design ein entscheidender Faktor, der – wie in diesem Fall – schnell zu einem Performancekiller werden kann. Dieses Problem ist in der Community allseits unter dem Begriff “Ascending Key Problem” bekannt. Das Problem tritt in einer Anwendung auf, in der zu einer Haupttabelle [dbo].[master_table] jeweils n Datensätze in einer Detailtabelle [detail_table] gespeichert werden. Sobald neue Datensätze in der Haupt- und Detailtabelle eingetragen werde und anschließend die abhängigen Detaildaten abgefragt werden, verschlechtert sich die Performance dramatisch, wenn es sich um neue Einträge handelte. Die Zusammenhänge zeigt der nachfolgende Artikel.

Sonntag, 20. Juli 2014

Verwendung von Variablen statt Literalen

Im Forum eines von mir sehr geschätzten MVP-Kollegen wurde eine Frage bezüglich der Verwendung von Variablen anstelle von Literalen gestellt (hier). Das Problem war, dass die Abfrage sich deutlich verlangsamte, wenn Variablen statt Literale verwendet wurden. Warum dieses Verhalten für Microsoft SQL Server jedoch korrekt ist, soll der folgende Artikel zeigen.

Mittwoch, 25. Juni 2014

Sperrverhalten von Shared Locks…

Auf Grund einer Anfrage des von mir sehr geschätzten Kollegen Johannes Curio (e | w), die sich um Sperren von Objekten in einem HEAP drehte, habe ich mich etwas intensiver mit dem Sperrverhalten von Microsoft SQL Server beschäftigt, da die grundsätzliche Frage war, ob Microsoft SQL Server in einem HEAP jede Datenseite / jeden Datensatz nach dem Scannen sofort wieder freigibt. Die Antwort – wie meistens bei Microsoft SQL Server – … “It depends”. Dieser Artikel beschreibt die unterschiedlichen Sperrverhalten bei SELECT-Statements unter Berücksichtigung der verschiedenen ISO-Isolationsstufen in einem HEAP und in einem Clustered Index.