Glorf.it

Glorf IT

Bedenkliches aus dem IT-Alltag

10. März 2010 um 20:32

Daten visualisieren mit Reporting Services 2008 R2

Neulich berieten wir Lösungen, wie man Daten mit Landkarten verheiraten kann. Heute fand ich eine weitere Möglichkeit: Mit den Reporting Services 2008 R2 kommt genau das Feature – ohne Mehrkosten. Hier werden Beispiele beschrieben, natürlich auch eines mit den Spatial Types des SQL Servers 2008. Was viele nicht wissen: Um solche Reports zu nutzen, muss ich gar keinen SQL Server haben. Über das ReportViewer-Control kann ich diese Features auch in meine Anwendungen integrieren. Und zwar ohne dass irgendwo ein SQL-Server oder gar die Reporting-Services installiert sein müssen. Ich wundere mich immer wieder, warum das nicht häufiger eingesetzt wird.

Es gibt noch ein paar andere interessante Erweiterungen des R2, die man in die Reports einbauen kann:

  • SparkLines – das sind im Prinzip Mini-Wertediagramme, die im Grid angezeigt werden. Hier ein Beispiel. Echt schick. Das gibt es auch als Erweiterung für Excel. Auf SparkLine.Org wird immerhin schon seit 2004 eine Open-Source-PHP-Bibliothek für Sparklines angeboten. Das ist der älteste Anbieter, den ich fand.
  • Data Bars – Hier wird nur ein Wert als horizontaler Balken dargestellt. Das setzten wir schon vor Jahren ein indem wir einfach ein Bitmap in der entsprechenden Größe anzeigen ließen…
  • Indicators – Das sind Bildchen, die gerne zusammen mit Key Performance Indicators (KPIs) genutzt werden: grün, gelb, rot. Meist als Ampel, oft als Daumen, aber auch Smilies sah ich schon. Für Trends werden aber auch gerne Pfeile nach oben, unten oder seitwärts genutzt.

Mehr Details zu den Features wurden von auf dem Blog Data Platform Insider veröffentlicht.

25. Februar 2010 um 19:55

Spickzettel-Sammlung: SQL Server Crib-Sheet Compendium

Erst heute bemerkte ich bei Simple-Talk das "SQL Server Crib-Sheet Compendium" als eBook. Ich finde es nicht schlecht, aber ich liege nicht in der Zielgruppe. Es richtet sich an Leute, die nur ab und an mit der Technologie zu tu haben, und sich dann einen schnellen Überblick verschaffen wollen, um gleich loszulegen.

Was mir fehlt ist so eine Kurzreferenz aller TSQL-Befehle als Taschenbuch. Für Sybase hatte ich mal so ein Teil, dass von Rob Verschoor erstellt und vertrieben wurde: "The Complete Sybase ASE Quick Reference Guide" – einfach klasse. Hier ist ein relevanter Ausschnitt als PDF.
Sybase selber bietet mit dem "Quick Reference Guide" mittlerweile etwas Ähnliches, wobei hier nur die reine Syntax drin steht.

Von Microsoft kenne ich das nicht. Gibt es so was und ich kenne es bloß nicht?

24. Februar 2010 um 19:19

Unterschiede der SQL Server – Microsoft und Sybase

Angeregt durch die Frage, wie Sybase wohl die Geschichte des SQL Servers beschreiben würde, fand ich bei Sybase eine außergewöhnlich detaillierte Beschreibung der technischen Unterschiede zwischen dem Sybase SQL Server und dem von Microsoft: "MS SQL to Sybase® ASE Migration Guide". Leider ist das Dokument inzwischen 4 Jahre alt, damals war die Version 15 aktuell. Kennt jemand einen aktuelleren Stand?

Dabei steht ASE für "Adaptive Server Enterprise". Sybase hat zwar immer noch die Namensrechte am Wort "SQL Server", aber dennoch in einem strategischen "Coup" gemeint Microsoft ein Schnippchen schlagen zu müssen. Weil Sybase nach der Trennung sehr viele neue Features in die Weiterentwicklung des SQL Server gesteckt hatte und mitansehen musste wie der damals auf einem älteren Stand basierende Microsoft SQL Server sich besser verkaufte als ihr System, wollte sie den MSlern ein Schnippchen schlagen. Sie dachten die Kunden könnten die Versionen nicht unterscheiden und sie dächten die neuen Sybase-Features seien auch im MS SQL Server. Tatsächlich sind viele der Innovationen von damals im MS-System auch heute noch nicht enthalten. Sybase wäre wohl nicht darauf gekommen, dass andere wesentliche Verkaufsargumente "uns" Kunden wichtig waren, z.B. die einfache Installation und gute Werkzeuge, außerdem war das Sybase "System 10" zu schnell auf den Markt geworfen worden, um Microsoft abzuhängen, und ein riesiges Bug-Desaster. Um den Unterschied deutlich zu machen, benannten sie Ihr System in "Adaptive Server Enterprise" um, was meiner Ansicht nach ihr größter Fehler war. Aber aus Stolz wollen sie das wohl nicht rückgängig machen. Eine Übersicht über die Versionen steht in der FAQ der Sybase User Group.

Beim kleinen Bruder, dem über Powersoft zugekauften Watcom SQL Server, den Sybase dann zügig "SQL Anywhere" nannte, haben sie den zwischenzeitlichen Schwenk nach "Adaptive Server Anywhere" zum Glück wieder rückgängig gemacht.

22. Februar 2010 um 19:06

Performance Troubleshooting mit SQL Server

Da gerade in letzter Zeit öfters Leute wegen verschiedener Performanceprobleme auf mich zu kommen, habe ich hier mal ein paar gute Links zu dem Thema gesammelt. Sie gehen von der Situation aus, dass das Kind schon in den Brunnen gefallen ist. Die Performance ist schlecht und nun geht es darum rauszufinden warum.

Eine Warnung muss ich allerdings vorwegschicken: Oft genug ist der SQL Server gar nicht der Flaschenhals. Bei einer kürzlichen Performance-Analyse stellte sich heraus, dass die Anwendung über einen bestimmten Mechanismus erreichte, das ein fachliches Objekt nur von einem Anwender gleichzeitig bearbeitet werden konnte. Das war über eine zentrale Sperrdatei am Server gelöst. Aber das gleiche Ergebnis würde es auch bringen, wenn diese Anwendungssynchronisierung über eine Tabelle gemacht würde. Ab einer bestimmten Anzahl an Benutzern wurde das System einfach langsam, weil hier die Anwendungssperren zu schlugen. In einem anderen Fall war das Performance-Bottleneck die Anwendung am Arbeitsplatz, hier dauerte das Aufbauen der Bildschirmelemente furchtbar lange, weil in den Oberflächenelementen immer alle Daten angezeigt wurden, z.B. die Liste der aller Kunden in einer Drop-Down-Box. Das wird nun man langsam, wenn das recht viele sind. Für solche Mengen war die Anwendung offensichtlich nicht ausgelegt. Um fest zustellen wo die Performance bleibt, hilft nur eine Analyse des Netzverkehrs. Dann sieht man genau auf welcher Seite des Netzes die Probleme sind, oder ob es gar das Netz selber ist…

Falls man sich dann sicher ist, das die Performance bei SQL-Server bleibt, dann empfehle ich als Einstieg das TechNet-Dokument "Troubleshooting Performance Problems in SQL Server 2008" von Sunil Agarwal und anderen. Inzwischen ist das Dokument schon fast ein Jahr erhältlich, aber immer noch aktuell.

Als Vertiefung empfehle ich das Buch "SQL Server 2008 Query Performance Tuning Distilled" von Grant Fritchey (aka ScaryDba) und Sajal Dam. Bei Google gibt es eine Vorschau. Das Buch ist aus meiner Sicht günstig für den gebotenen Stoff. Wenn es darum ginge schlechte Performance proaktiv zu vermeiden, dann würde ich eher die Bücher von Itzik Ben-Gan empfehlen.

Zuletzt empfehle ich auch immer gerne die Unterlagen von TechNet-Vorträgen. Franz Robeller und Oliver Goletz stellen auch Ihre Folien und Beispiele der TechNet-Vorträge vom November 2009 bereit. Hier der Download-Link.

22. Februar 2010 um 18:50

Tipps zur Wiederherstellung beschädigter Datenbanken von Paul Randal

Bevor die nächste Ausgabe des TechNet-Magazins erscheint, möchte ich noch auf die Tipps zur Wiederherstellung beschädigter Datenbanken, Empfehlungen zum Verkleinern von Datenbanken und mehr von Paul S. Randal hinweisen. Allerdings komme ich mit den deutschen Übersetzungen nicht so gut zurecht. Das Wort "Snapshotisolierung" könnte zwar noch schlimmer übersetzt werden, aber löst immer erst mal ein kurzes Nachdenken aus. Erst durch den Artikel erfuhr ich übrigens, dass er nun mit Kimberly (vermutlich Tripp) verheiratet ist. War wohl auch der Grund für seinen Rückzug von Microsoft… ;-)

21. Februar 2010 um 14:14

SQL Server Denali – der Große

Über Klaus wurde ich auf einen durchgesickerten Life-Cycle-Plan von Microsoft-Produkten aufmerksam. Da vergaß der Microsoft-Entwickler Chris Green bei der Erstellung einer Product-Support-Life-Cycle-Übersicht offenbar die noch nicht veröffentlichten Infos rauszufiltern. Daher kann dort sehen, wie der aktuelle Stand der Planung zu verschiedenen Produkten ist. Chris nahm das Dokument inzwischen zwar aus dem Netz, aber bspw. bei Google und Softpedia.com findet man es noch. Darin findet man auch die Planung zu Windows 8 und anderen interessanten Produkten… ;-)

Demnach wären für die SQL Server folgende "Product Support Life Cycles" zu erwarten:

  • SQL Server 2000: Dezember 2000 bis April 2013
  • SQL Server 2005: Januar 2006 bis April 2016
  • SQL Server 2008: November 2008 bis Januar 2019
  • SQL Server 2008 R2: Februar 2011 bis Juni 2020
  • SQL Server 2011: Juli 2011 bis Juli 2021

Neu daran sind freilich nur die zum 2008-R2 und 2011er. Aber gerade die sind für mich aktuell besonders spannend. Denn warum sollte man in 2010 mit dem Umstieg auf den SQL Server 2008 R2 beginnen, der in Bezug auf den SQL-Server-Core kaum Erweiterungen bringt, wenn ein Jahr später die richtige Version kommt? Wenn wir mit der Umstellung fertig wären, dann wäre zudem die nächste Version schon längst freigegeben… Blöd ist nur, dass die Zahlen schon jetzt nicht stimmen, denn der SQL Server 2008 R2 soll ja nun doch erst im Mai kommen. Wird dann aus den genannten verkaufspolitischen Gründen die Freigabe des 2011ers auch verschoben? Das wäre schade.

Im Artikel "Introducing Microsoft Codename Denali ‘the Great One’" auf Softpedia.com tragen sie weitere Puzzle-Teile zusammen. Beispielsweise, dass der SQL Server 2011 den Codenamen "Denali" trägt. Wikipedia sagt zum Mount McKinley:

Ein alternativ verwendeter Name des Berges ist Denali, ein Wort aus dem Athapaskischen, das der Große oder der Hohe bedeutet.

Soso, der große SQL Server kommt dann nächstes Jahr. Da freue ich mich dann schon drauf… ;-)

21. Februar 2010 um 12:37

SQL-Insider

Wie ich heute sah, hat Klaus Oberdalhoff letzte Woche einen Blog gestartet: SQL-Insider.de. Darin geht es um Dinge rund um SQL Server. Bisher sind nur 2 Beiträge drin, aber es kommen sicher noch mehr. Viel Erfolg. Klaus!

Klaus ist bei uns in Franken recht bekannt, weil er seit Jahren die fränkische Regionalgruppe der SQL-PASS leitet. Durch seine freundliche, aber bestimmt Art konnte er bislang immer wieder viele hochkarätige Referenten gewinnen. Bei letzten Vortrag zum Thema Datensicherung mit SQL Server kamen beispielsweise 33 Teilnehmer.

PS: Hallo Klaus, wenn Dein Blog Kommentare erlauben würde, dann hätte ich auch dort gratuliert… ;-)

17. Februar 2010 um 20:46

Die Geschichte des SQL Servers aus der Sicht von Microsoft

Da jetzt bald wieder eine neue Version des Microsoft SQL Servers auf den Markt kommt, möchte ich auf den Artikel SQL MythBusters – "SQL Server is really a Sybase product not a Microsoft one." hinweisen. Hier beschreibt Euan Garden die Geschichte des SQL Servers aus der Sicht von Microsoft. Da würde mich doch glatt die Sicht von Sybase interessieren…

Etwas differenzierter beschreibt es Kalen Delaney in dem ersten Kapitel des vergriffenen Buches "Inside SQL Server 2000", dass freundlicherweise nun im Internet als PDF zugänglich ist.

15. Februar 2010 um 20:24

Artikel über Deadlock-Grafen

Nachdem bei uns das Thema Deadlock wieder als Welle reinschwappt, freute ich mich über einen Einsteiger-Artikel zum Thema Deadlock-Grafen im SQL-Magazine. der Artikel ist frei zugänglich. Normalerweise muss man wenigstens registriert sein oder am besten gleich "Subscriber". Beides ist hier nicht nötig.

Wer weitere Infos zu dem Thema sucht, der findet am Ende Links auf deutlich tiefer gehende Artikel.

14. Februar 2010 um 20:02

Virtuelle Datenbanken

In dieser Woche wurde ich auf eine Werbung aufmerksam in der von virtuellen Datenbanken die Rede war. Die Idee ist ebenso einfach wie bestechend: Offenbar ist die Software in der Lage eine Backupdatei des Microsoft SQL Servers wie eine virtuelle Datenbank "anzuhängen" und zugreifbar zu machen. Das wäre schon echt klasse: Wenn bisher jemand versehentlich einen Bestand gelöscht hat, dann muss man die gesicherte Datenbank parallel zur bestehenden wiederherstellen und dann mit der Software die Daten eines Bestandes exportieren und in die aktuelle Datenbank importieren. Wenn man auf die virtuelle Datenbank nun mit der Anwendung wenigstens lesend drauf könnte, dann würde der Zwischenschritt des Wiederherstellens komplett entfallen. Das könnt die knapp 500 USD schon wert sein.

Andererseits kann ich mir nicht vorstellen, dass die Software die ganzen MS-APIs unterstützt, so heißt es aber in der Beschreibung ("Use all native and third-party tools to access virtual database"). Vermutlich kann man nur mit den Werkzeugen drauf oder denkt der SQL Server wirklich, das sei eine Datenbank? Hat schon jemand Erfahrung mit "SQL virtual database" von Idera? Das Video hat mich jedenfalls schwer beeindruckt. Leider weiß ich jetzt schon, dass es lange dauern wird, bis ich mich damit mal beschäftigen kann… :-(

3. Februar 2010 um 23:36

Trace auswerten: sp_cursoropen

Auf sourceforge.net findet man eine Doku von sp_cursoropen. Das ist besonders dann interessant, wenn man in einem Profiler-Trace ein sp_cursoropen findet und sich fragt, was denn da wohl für ein Cursortyp dahinter steckt.



Hex-Wert Cursortyp
0x0001 Keyset-driven cursor.
0x0002 Dynamic cursor.
0x0004 Forward-only cursor.
0x0008 Static cursor.
0x0010 Fast forward-only cursor.
0x1000 Parameterized query.
0x2000 Auto fetch.
0x4000 Auto close.
0x8000 Check acceptable types.
0x10000 Keyset-driven acceptable.
0x20000 Dynamic acceptable.
0x40000 Forward-only acceptable.
0x80000 Static acceptable.
0x100000 Fast forward-only acceptable.

Das bedeutet beispielsweise, dass eine 16 im dritten Parameter (@scrollopt) auf den Cursortypen "Fast forward-only cursor" hinweist, was dem "Default Result Set" bzw. "Firehose Cursor" entspricht. Das ist dann der Idealfall. Alle anderen Cursortypen sind langsamer, wenn nur das Lesen der Daten im Vordergrund steht.

26. Januar 2010 um 20:09

Bug: Syntax-Fehler im Kommentar

Mein Kollege Diethard machte mich auf einen Fehler im Microsoft SQL Server 2005/2008 aufmerksam, der bei Microsoft schon bekannt ist: Wenn man (*) als erstes nach in einem Zeilenkommentar schreibt, dann kommt ein Syntaxfehler.

Hier ein Beispiel:

--(*)

Weil das so kurz ist, hier ein hübsches Repro von Diethard:

RAISERROR('--(*)',0,0);
GO
--(*)
GO
RAISERROR('-- (*)',0,0);
GO
-- (*)
GO
/* Results
--(*)
Msg 102, Level 15, State 1, Line 1
Falsche Syntax in der Nähe von '--(*'.
-- (*)
*/
GO
RAISERROR('COUNT(1) --(*)',0,0);
GO
SELECT COUNT(1) --(*)
	FROM sys.sysobjects
GO
RAISERROR('COUNT(1) -- (*)',0,0);
GO
SELECT COUNT(1) -- (*)
	FROM sys.sysobjects
GO
/* Results
COUNT(1) --(*)
Msg 102, Level 15, State 1, Line 1
Falsche Syntax in der Nähe von '--(*'.
COUNT(1) -- (*)

-----------
1946
*/

Weil Microsoft dem so wenig Bedeutung beimisst, wird es vermutlich erst am St.Nimmerleinstag beseitigt, bemerkte ich ihm gegenüber. Daraufhin erstellte Diethard einen Algorithmus, ob der Tag schon gekommen ist:

DECLARE @AfterStNimmerlein bit;
BEGIN TRY
  EXEC('--(*)'); SET @AfterStNimmerlein = 1;
END TRY BEGIN CATCH
  IF ERROR_NUMBER() = 102 SET @AfterStNimmerlein = 0;
END CATCH;
SELECT AfterStNimmerlein=@AfterStNimmerlein;

;-)

Aber was uns wirklich interessieren würde: Wie kann es zu einem Syntaxfehler in einem Kommentar kommen?