Glorf.it

Glorf IT

Bedenkliches aus dem IT-Alltag

22. März 2008 um 12:00

Neue Features im SQL-Server-2008

Ruprecht (Dröge?) hat auf dem SQL-Server-FAQ-Blog alle neuen Features des SQL-Server-2008 gesammelt über die schon mal irgendwo berichtet wurde. Teilweise verlinkt er gleich auf die weiterführenden Artikel. Sehr interessante Übersicht, danke!
Sowas fand ich bei Microsoft noch nicht. Oder hab ich es nur übersehen?

Schau mal an: SQL Server 2008 – Neue Features

Hinweis: Dieser Artikel hätte eigentlich am 2.11.2007 zeitgesteuert veröffentlicht werden sollen. Das hat komischerweise nicht geklappt. Leider bemerkte ich das erst jetzt gerade als ich mal meine gesammten Postings in den MySQL-Datenbank zählte…
Weil ich den Eindruck habe, dass die Liste immer noch durch seine Vollständigkeit glänzt, habe ich den Artikel jetzt manuell veröffentlicht.

21. März 2008 um 12:00

Schulung von Kalen Delaney auf DVD

Heute wurde ich über den SQl-Server-Magazin-Newsletter darauf aufmerksam, dass Kalen Delaney plant alle ihre Schulungen auf DVD rauszubringen. Das ist in merhfacher Hinsicht ungewöhnlich:

  • Leute, die von Schulungen leben wollen in der Regel, dass die Interessenten in die Schulung gehen und geben deswegen eher selten zu viele Infos raus.
  • Kalen ist eine der Top-Referenten zum SQL-Server. Der Inhalt dürfte also mit Sicherheit spannend sein. Diese DVD-Serie könnte glatt zum Pflichtprogramm jedes angehenden SQL-Server-Entwicklers werden.
  • Der Preis von 30 US-Dollar ist wirklich fair! Hey, wir reden hier von derzeit 19 Euro. Und wnen man sich das per Straming ansehen will, dann zahlt man in den kommenden 30 Tagen gerade mal 15 USD (also keine 10 Euro).

Die erste Folge "Lesson 1: Architecture and Metadata" ist jetzt erhältlich und behandelt die Themen:

  1. Metadata in SQL Server 2005
  2. Process Management
  3. Memory Management
  4. I/O Management
  5. SQL Server 2005 Configuration Tools

Laut Brian Kelley ist der Vortrag nicht ganz 2 Stunden lang und enthält Übungen (inkl. der Skripte auf der DVD). Das ist mit Sicherheit etwas, dass ich für unsere Gruppe bestellen werde, wenn ich wieder ins Büro komme!

Wer wissen will, was da noch auf ns zukommt, der kann sich die originale Beschreibung des 5-tägigen Kurses ansehen. Die DVD behandelt das erste Modul, also den ersten halben Tag.

6. März 2008 um 19:38

Können die Großen MySQL austrocknen?

Puh, jetzt wird es aber langsam eng für MySQL. Wird ausgerechnet der große Vorteil des modularen Aufbaus für MySQL zum Verhängnis? Man kann wählen welche Database-Engine unter MySQL verwendet werden soll. Nachdem die beliebte InnoDB von Oracle gekauft wurde und von MySQL lizensiert werden musste, hat IBM SolidDB gekauft und will deren Entwicklung einstellen.

Warum sollte IBM auch wollen, dass die freie Konkurrenz zu gut wird? Immerhin ist MySQL heute schon im Web-Bereich "Marktführer" und breitet sich gerade in anderen Bereichen aus. Wenigstens stehen – Dank GPL – die bisher veröffentlichten Sourcen weiterhin bereit. Aber wer soll das Projekt fortsetzen? Ob es in so einem speziellen Gebiet auch ohne professionelle Entwickler gehen kann, also mit Fachleuten, die nur in ihrer Freizeit die nötige Man-Power aufbringen dürfen, ist schon zweifelhaft…

Falls entsprechende Gerüchte oder Befürchtungen schon länger im Umlauf waren, dann scheint die Flucht der Firma MySQL AB in die starken Arme von Sun ein schlauer Schritt gewesen zu sein.

6. März 2008 um 19:34

Komische Meldung des SQL-Servers auf Energiespar-CPUs

Passend zu dem Cebit-Leitthema "Green IT" fragte mich heute ein Kollege zu einer Meldung, die der SQL-Server gerne bei unseren Kunden wirft. Meist handelt es sich dabei um die Express-Edition, die auf einem Arbeitsplatzrechner bzw. Laptop läuft:

Error 17896
"The time stamp counter of CPU on scheduler id XY is not synchronized with other CPUs."
bzw.
"Der Timestampzähler der CPU für das Zeitplanungsmodul mit der ID XY ist nicht mit anderen CPUs synchronisiert."

Das ist eine reine Info-Message, die mit SP2 eingeführt wurde. Man kann sie nicht abschalten. Wenn man Pech hat, dann müllt einem diese Meldung nicht nur das Errorlog, sondern auch die Ereignisanzeige voll.

Die Meldungen kommen beispielsweise gerne auf Laptops, die je nach eingestelltem Energie-Schema den CPU-Takt ändern. Das mag der SQL-Server gar nicht gerne, weil sich einige interne Abläufe am CPU-Takt orientieren. In zukünftigen Versionen wollen die MSler das Verhalten ändern. Mal abwarten…
Durch das Umschalten auf das Energie-Schema "Dauerbetrieb" kann man das ändern.

Wenn man auf einem "normalen" Rechner einen Server (z.B. Peer-to-Peer) betreibt, dann sollte er sowieso generell auf "Dauerbetrieb" eingestellt sein, um ständig eine gute Zugriffszeit zu gewährleisten. Aber Achtung: angeblich ändern auch manche Tools den Prozessortakt. Da kenne ich aber keines, kann mich da jemand erleuchten?

Microsoft empfiehlt an dieser Stelle auch das feste Zuordnen von CPUs mit der Affinity-Mask. An anderen Stellen wird generell davon abgeraten. Ich schließe mich der Ablehnung an. Nur echte Experten mit dedizierten Servern für einen SQL-Server mit einer High-Performance-Datenbank sollten das einsetzen.

Hintergrund-Informationen findet man in folgenden Dokumenten:

28. Februar 2008 um 22:14

Der "Cumulative update package 6" für SQL-Server-2005 ist endlich da

Wie ich jetzt erst bemerke, ist das kummulative Update-Paket für den SQL-Server-2005 schon letzte Woche raus gekommen. Und er bringt eine ganze Latte an Hotfixes auf die wir gewartet haben.
Hier ist eine halbwegs vollständige Liste der enthaltenen Fehlerbehebungen.

Wenn man den Hotfix haben will, dann muss man in einem Online-Formular bei Microsoft nachfragen. Mega-lästig.

19. Februar 2008 um 19:37

Power Tools für Data Dude 2008

Nachdem ich jetzt von verschiedenen Seiten darauf hingewiesen wurde, hier auch das Announcement auf dem "Data Dude" Weblog: Für die "Visual Studio Team System 2008 Database Edition" sind jetzt die Power Tools erschienen. Wenn ich nicht gerade im Job rotieren würde, dann wäre jetzt der Zeitpunkt an dem ich von Visual-Studio-2005 auf 2008 umsteigen würde…

Auf dem Weblog werden die neuen Features auch peau a peau beschrieben. Bisher gibt es schon:

Den Download gibt's hier.

15. Februar 2008 um 18:20

Ergebnisse vom Profiler und PerfMon zusammenführen

Alle, die nicht auf den erstklassigen Performance-Workshop des PSS-Teams am 14.4. gehen können, empfehle ich den Artikel "Integrating Profiler and PerfMon Log Files" auf SQLTeam.com.

Darin wird beschrieben, wie man die Ergebnisse des PerfMon in den Profiler laden kann, um sich eine kombinierte Darstellung ansehen zu können. Dadurch wird es bspw. möglich Infos zur Festplatten Nutzung oder der CPU-Nutzung mit den Traces des Profilers (also z.B. mit den SQL-Befehlen und deren Zeiten) zu kombinieren. Ohne diesen irren Trick ist man immer auf einem Auge blind…

8. Februar 2008 um 22:24

Das Kreuz mit den Kreuztabellen

Als ich in den kommenden deutschen TechNet-Webcasts blätterte, fiel mir der Vortrag "SQL Server 2005 – Kreuztabellenabfragen – Kreuztabellenabfragen mit dem PIVOT-Befehl und den Reporting Services (Level 200)" ins Auge.

Ich habe nämlich dauern Probleme mit den deutschen Übersetzungen der englischen Fachbegriffe. Da habe ich einfach keine Chance: zwar weiß ich jetzt, dass ich nach "gruppierten Indexen" gucken muss, wenn ich in der deutschen Hilfe Infos zum "clustered index" suche, aber das ist auch schon alles.

Die Beschreibung aus "Kreuztabellen" bei eulanda.de fand ich am besten:

Eine Kreuztabelle erlaubt es, Auswertungen mit verschiedenen Dimensionen auszugeben. Normale Tabellenstatistiken haben zwei Dimensionen. Man kann hier beispielsweise eine Zeitachse (oben) und eine Postleitzonen-Achse (links) darstellen und als Ergebnisse die aufsummierten Umsätze anzeigen.

Möchte man jedoch nicht nur Gebiete in Bezug auf einen Zeitraum betrachten, sondern verschiedene Zeiträume wie Jahr, Quartal, Monat und neben den Gebieten auch noch Kundengruppen und Vertreter in der Auswertung haben, so müsste man konventionell sehr viele einzelne Statistiken ausdrucken und jeweils die Werte vergleichen. Aus solchen Listen ist es nur schwer möglich, einen Überblick zu erhalten und so die richtigen Entscheidungen für ein Unternehmen zu treffen.

Kreuztabellen helfen hier weiter. Sie stellen beliebig viele Dimensionen – also Jahr, Quartal, Monat, Gebiet, Kundengruppe usw. – in einem einzigen Diagramm dar. Jede Kombination von Dimensionen ist ein Kreuzungspunkt; daher kommt auch der Name Kreuztabelle.

Das heißt für mich, dass ich schon längst mit Kreuztabellen arbeite, aber einfach den Begriff nicht kannte… An den Reporting-Services nimmt man dazu eine Matrix. Das Beispiel "Kreuztabelle Absatz nach Gebiet" beschreibt Microsoft in dem Artikel "SQL Server 2000 Reporting Services durch benutzerdefinierten Code erweitern". Ein ganz einfaches steht im Probekapitel 6 "Einführung in die Berichterstellung" des Buches "Microsoft SQL Server 2005 Reporting Services".

Daher hier mal meine kleine Info-Sammlung zum Thema "Kreuztabellen":

30. Januar 2008 um 20:48

SQL Server 2008 Roadmap

Inzwischen weiß es jeder "Microsoft SQL Server 2008" kommt erst später. Weil die den Artikel von Microsoft dazu bestimmt demnächst mal suche, hier der Link zur "Microsoft SQL Server 2008 Roadmap Clarification":

Microsoft is excited to deliver a feature complete CTP during the Heroes Happen Here launch wave and a release candidate (RC) in Q2 calendar year 2008, with final Release to manufacturing (RTM) of SQL Server 2008 expected in Q3.

Das übliche Spiel ist inzwischen schon fast nicht mehr peinlich…

19. Januar 2008 um 14:55

Replay Markup Language

Jetzt steht schon der SQl-Server-2008 vor der Tür und dennoch entdecke ich am SQl-Server-2005 immer wieder Dinge von denen ich vorher noch nie gehört habe. Zum Beispiel entdeckte ich gerade einen Hotfix für die "Replay Markup Language (RML) Utilities for SQL Server".

Was ist denn die "Replay Markup Language"?

You can use the RML Utilities for SQL Server to perform the following tasks:
• You can determine the application, the database, the SQL Server login, or the query that is using the most resources.
• You can determine whether the execution plan for a batch is changed when you capture the trace for the batch. Additionally, you can use the RML Utilities for SQL Server to determine how SQL Server performs each of these execution plans.
• You can determine the queries that are running slower than before.
After you capture a trace for an instance of SQL Server, you can use the RML Utilities for SQL Server to replay the trace file against another instance of SQL Server. If you also capture the trace during the replay, you can use the RML Utilities for SQL Server to compare the new trace file to the original trace file. You can use this technique to test how SQL Server behaves after you apply changes.

Naja, ich bin ja lernfähig. Klingt wenigstens interessant.

16. Januar 2008 um 21:35

Sollen Bilder in die Datenbank?

Jan stellte in seinem Kommentar eine sehr gute Frage, die ich hier beantworten möchte:

Dann habe ich gleich mal eine Frage an den Profi: Ab wann /bis wann ist es sinnvoll und praktikabel eine Datei in einer Datenbank zu speichern und nicht nur den Pfad der Datei im dazugehörigen Filesystem (Ist es das überhaupt?). Die Last der Datenbank ist ja um ein vielfaches höher als wenn zusätzlich über das Filesystem gelesen und geschrieben wird. Gehen wir mal von eine Fotodatenbank mit vlt. 5000 Bildern à 2MB aus, das sind wir ganz schnell bei knapp 10GB die über die DB verwaltet werden müssen (OK, große Datenmengen sollten nicht das Problem sein, nur fehlt mir da die Erfahrung.). Kennst du dazu vlt. ein paar hilfreiche Quelle bzw. eine anständige Kosten-Nutzen-Analyse?

Zunächst muss man mal sehen, in welchem Bussiness-Sektor wir uns bewegen.

Im privaten Bereich wird man vermutlich die Daten auf der Festplatte des PCs speichern (unter Windows XP oder Vista) oder ein Windows XP/Vista als Peer-Server nutzen. Dann hat man vermultich die "billige" SQL-Server-Express-Edition im Einsatz. Sie kann maximal 4 GBytes große Datenbanken bearbeiten. Dann ist Schluss und man müsste zu der nächst-höheren Standard-Edition greifen. Deswegen kommt es hier meines Erachten aus Kostengründen nicht in Frage die Bilder in die DB zu packen.

Sind wir im professionellen Bereich, dann läuft vermutlich eine SQL-Server-Standard-Edition auf einem Windows-Server-System. Hier gibt es keine Größenbeschränkung.

Performance und Ausfallsicherheit:

Meiner Erfahrung nach machen SQL-Datenbanken auf IDE- und SATA-Festplatten leichter mal schlapp als auf RAID-Systemen. Meist ist auf den PCs nämlich der Schreibcache der Festplatten bzw. deren Controllern aktiviert. Kommt es dann während eines Schreibvorgangs zu einem Stromausfall oder einem harten Reset, kann die Datenbank schon mal kaputt sein. Dann ist man unter Umständen schlecht bedient, wenn man Bilder in einer Datenbank hat. Wer hat schon eine tagesaktuelle Sicherung parat oder ist Experte in Sachen Datenbank-Reparatur?

Schaltet man den bösen Schreib-Cache aus, dann spürt man das in der Performance meistens sehr deutlich, wenn der SQL-Server das nicht mit einem großen Daten-Cache etwas ausgleichen kann. Mit der Express-Edition ist der Cache auf maximal 1 GBytes beschränkt.

Am Server gilt das nicht so stark: hier werden (hoffentlich) schnelle RAID-Systeme eingesetzt, die meist noch mit der USV (unterbrechungsfreien Stromversorgung) abgesichert sind.

Verblüffenderweise ist die Performance in beiden Fällen nicht so gravierend anders als seien die Bilder direkt auf der Platte abgelegt. Je nach API (.Net bekommt im Punkto Laufzeit hier einen Malus) reden wir von 20 bis 50% "Aufpreis". Das klingt nach viel, ich hätte aber durchaus mehr befürchtet.

Handhabung

Als wichtigestes Kriterium würde ich aber heranziehen, wie mit den Bildern gearbeitet werden soll. Wenn man beispielsweise mit einem beliebigen Programm darauf zugreifen will, dann muss man tief in die Trickkiste greifen, wenn sie in einer Datenbank liegen. Im Normalfall kann man weder im Explorer, noch im Bildverarbeitungsprogramm die Bilder sehen, bearbeiten oder speichern, die in einer Datenbank liegen. Ich nutze beispielsweise gelegentlich eine Software, die doppelte Bilder erkennt und dann löscht.
Will man das mit seiner Anwendung erreichen, dann muss man sich in den Explorer "einklinken" und die Bilder so anzeigen als seien sie in einem Dateisystem. Das habe ich noch nicht gemacht und halte es deswegen für nicht so einfach. Gute Dokumenten-Management-Systeme können das aber.
Wahrscheinlich ist es sau schwer, sonst sähe man das öfter… 😉

Aus Gründen der Handhabung würde ich die privaten Bilder deswegen gar nicht in der Datenbank speichern.

Weiterführende Quellen (oder eine Kosten-Nutzen-Analyse) fallen mir gerade nicht ein. Meist wird nur thematisiert wie man Bilder als BOLBs schreibt oder liest. Falls ich noch etwas finde, dann schiebe ich den Link nach.

Alles neu macht der Mai:

Ab dem SQL-Server-2008 wendet sich übrigens das Blatt. Der kennt als neuen Datentyp FileStreams. Da liegen die Dateien "normal" auf der Platte, die Daten werden vom SQL-Server aber mit verwaltet als seien es seine eigenen. Ich denke, dass ist das Vermächtnis des WinFS.
Jetzt müssen wir noch die Daumen halten, dass dies Feature wegen zu vieler Fehler nicht aus der Liste purzelt, sondern wirklich in der Freigabeversion drin ist… 😉

7. Januar 2008 um 18:27

SQL2008: GEOGRAPHY und GEOMETRY

Der SQL-Server-2008 enthält unter anderem die neuen Datentypen GEOGRAPHY und GEOMETRY. Eine sehr lesenswerte Einführung findet man bei Codeproject.com: "Schiffe versenken" in SQL.

Schau mal da: "SQL-Battleship 2008"