Glorf.it

Glorf IT

Bedenkliches aus dem IT-Alltag

21. September 2008 um 17:25

Try-Catch mit Nebenwirkungen auf Cursor

Seitdem sie mit SQL-Server-2005 eingeführt wurde, bin ich ein Fan der neuen Fehlerbehandlung. Deswegen empfahl ich deren Einsatz auch gleich in unseren Richtlinien. Leider mussten wir kürzlich feststellen, dass sie unerwartete Nebenwirkungen hat.

Wir setzen bei uns ganz gerne Stored-Procedure und Functions ein. Nicht nur wegen der – in der Regel – besseren Performance gegenüber den Alternativen, sondern auch weil man deren Implementierung ändern kann ohne das Anwendungscoding anpassen zu müssen. Jetzt hat ein Kollege in seine Stored-Procedure die alte @@ERROR-Fehlerbehandlung durch die Neue mit TRY-CATCH ersetzt und bekam einen hässlichen Fehler. Wir konnten das ganz leicht reproduzieren und sind im Gespräch mit Microsoft über das Verhalten.

  • Man benötigt eine Client-Anwendung, die Daten aus einer Stored-Procedure über einen Cursor liest. In unserem Fall war das eine Windows-32-Anwendungen auf Basis MFC/ODBC, aber das ist fast egal: Mit ADO/OLEDB passiert das gleiche, weil sich der Server komisch verhält.
  • Die Anwendung öffnet einen Cursor, der auch rückwärts navigieren kann, also z.B. static. (Um das mit ODBC zu reproduzieren, muss man mit Srever-Cursors arbeiten. Man darf hier also nicht die Client-Library verwenden, weil damit die kompletten Daten in einen Cache am Client geladen werden und dann dort navigiert wird. Aber wer holt sich diese Spaßbremse schon freiwillig ins Boot, sie wurde eingeführt um ODBC-Treibern ohne Cursor-Unterstützung auf die Sprünge zu helfen. Auf Kosten der Performance…)
  • Das ResultSet kommt aus einer Procedure P1, die im einfachsten Fall nur ein einzelnes SELECT enthält.
  • Die Anwendung öffnet den Cursor, liest ein paar Sätze und springt dann wieder zum ersten Datensatz.

Wenn in der Stored-Procedure nun ein TRY-CATCH um das SELECT gemacht wird, dann treten in dem Szenario plötzlich ein Fehler auf, weil der Rücksprung auf dem Cursor nicht mehr möglich ist. Auch parallel geöffnete, andere Client-Cursor – auf der gleichen Connection – können nicht mehr parallel gelesen werden.

Das liegt daran, dass der SQL-Server anstelle des Static-Cursors auf der Server-Seite plötzlich ein Default-ResultSet ("forward-only/read-only", auch als "Firehose"-Cursor" bekannt) verwendet. Und das kann freilich keine Rücksprünge. Das Default-ResultSet belegt ja bekanntlich auch die ganze Connection und verhindert das andere Cursor ausgelesen werden bis das Default-ResultSet wieder geschlossen wurde. (MARS hilft bei Verwendung der "alten" Schnittstellen wir MFC übrigens auch nicht wirklich weiter.) Schade, dass das von Microsoft nicht dokumentiert wurde.

Wer denkt, er sei mit seiner .Net-Anwendung aus dem Schneider, den muss ich leider enttäuschen, auch hier werden unter der Haube Cursors verwendet, um die Daten auszulesen. Aber freilich kommt es in der Regel nicht vor, dass auf den Cursors rumnavigiert wird.

Daher werden wir wohl empfehlen müssen, dass die neue Fehlerbehandlung genau dann nicht eingesetzt wird, wenn das ResultSet mit einem Cursor ausgelesen wird, auf dem entweder rauf und runter navigiert wird oder parallel auf andere Cursor zugegriffen wird. Leider ist das bei den meisten unserer bestehen Windows-32-Anwendungen so. Erst die neue Programmgeneration geht anders vor…

20. September 2008 um 21:44

fast fertig

Mit meinen letzten Kräften schickte ich heute die schon angemahnte Einkommenssteuererklärung per Elster ans Finanzamt. Leider streikte unser Drucken schon wieder! Nachdem bei der letzten wichtigen Aktion der Toner leer war, hat jetzt die Walze den Geist aufgegeben… Ich fasse es nicht!

Naja, die Walze ist jetzt schon bei einem Anbieter bestellt, der das Teil angeblich auf Lager hat. Mal sehen wann das ankommt. Mit etwas Glück schaffe ich die gesetzte Frist trotzdem… 🙂

Warum passiert sowas eigentlich genau dann, wenn es am meisten weh tut?

17. September 2008 um 22:30

Panne in Norwegen: Daten aller Steuerzahler öffentlich?

Hallo? Wurden da wirklich die Daten aller Steuerzahler an Medien verschickt? Die Daten kann man doch nie wieder einfangen. Bei TecChannel stehts im Detail, hier ein Ausschnitt:

Das Osloer Steueramt hat die komplette Liste aller 3,9 Millionen Steuerzahler mit Personennummer, Namen, Einkommen und Steuersatz auf CDs ganz offiziell an Medien geschickt.
Der Sprecher der norwegischen Datenschutzbehörde ist schockiert. "Das ist so schlimm wie die Datenskandale in Großbritannien", sagt Ova Skåra – und untertreibt damit noch. Während bei den Briten mehrfach hochsensible Datensätze über Millionen Bürger "nur" spurlos verschwanden, irgendwo vergessen wurden oder am Straßenrand zufällig gefunden wurden, hat das Osloer Steueramt gleich die komplette Liste aller 3,9 Millionen Steuerzahler mit Personennummer, Namen, Einkommen und Steuersatz auf CDs ganz offiziell an Medien geschickt.

Das ist doch man etwas Neues: Jetzt werden sogar die Einkommensverhältnisse veröffentlicht. In Italien kann man ja angeblich die Steuerdaten von jedem Bürgen einsehen – um Steuerhinterziehung zu erschweren. Aber das war hier wohl nicht die Motivation…

Dennoch ist die ganze Aufregung jetzt um die veröffentlichte Steuernummer entbrannt, nicht um das Einkommen! denn mit der ansonsten geheimen Steuernummer kann man offenbar allerlei Infos bekommen.

17. September 2008 um 22:06

kostenloses eBook zum SQL-Server-2008

Mein Kollege Christian machte mich heute auf das kostenlose eBook von Microsoft aufmerksam: "Introducing Microsoft SQL Server 2008" von Peter DeBetta, Greg Low (allen SQL-Passlern vom diesjährigen "european congress" in Neuss bestens bekannt) und Mark Whitehorn. Man benötigt allerdings wieder einen Microsoft-Account (also passport, live oder so).

Ich finde es angenehm, dass in dem Buch nur die Neuigkeiten im SQL-Server 2008 beschrieben werden. Es richtet sich also an alte Hasen. Auf 231 Seiten finden sich meiner Ansicht nach alle wichtigen Dinge.

16. September 2008 um 23:19

menschliches Tetris

Ich will damit nicht sagen, dass Tetris normalerweise unmenschlich ist. Aber hier ist ein Video von Tetris mit echten Menschen, die auf (Kirchen-?)Bänken sitzen:

The Original Human Tetris AmazingMore amazing video clips are a click away

Allerdings ist das nur etwas für echte Fans. Ich habe die "Musik" nur eine Minute ausgehalten und das Video daher nicht bis zum Ende angesehen…

16. September 2008 um 18:58

selber digitalisieren

Heute habe ich einigen Papierkram, der im Urlaub auflief mit unserem Fotokopierer digitalisiert (prima Sache: man bekommt die Papiere als PDF per Mail zugeschickt). Das war schon einiges an Arbeit. Dabei fragte ich mich, ob ich nicht jemand anderen darum bitten sollte. Das Problem ist, dass ich es eben so haben möchte, dass ich das Zeug wieder finde (also mit Schlagworten, in akzeptabler Qualität und alle zusammengehörenden Papiere in einem Dokument). Meiner Erfahrung nach, ist es dann besser es selber zu machen. So etwas zu kontrollieren und dann nachzuarbeiten ist leider auch aufwändig…

15. September 2008 um 21:58

Viel Aufregung um eine einzige Datei

Schon während meines Urlaubes bemerkte ich, dass Microsoft mit dem "Microsoft Security Bulletin MS08-052" einen weiteren Hotfix zum SQL-Server-2005 rausbrachte. Aber weil es sich dabei nur um ein Problem in der Datei "Gdiplus.dll" (Windows GDI+) handelt, sind nur die Werkzeuge des SQL-Servers betroffen, genauer vorwiegend das "SQL Server Management Studio". Deswegen gibt es den Hotfix auch nicht für die SQL-Server-Express-Edition ohne Tools. Wie ich nun hörte, macht Microsoft da einen riesen Wirbel drum.

Eigentlich würde es wohl ausreichen, wenn Microsoft die eine DLL austauscht. Statt dessen liefern die Genossen den kompletten CU9 mit 145 MBytes per Windows-Updates aus. Starke Leistung. Und so gut mitgedacht.

Die DLL wird übrigens auch noch noch im Windows, Visual-Studio, Office und Visio mitgebracht und jeweils in separaten Paketen gefixt. Auf meinem heimischen Rechner fand ich in 15 Verzeichnissen Exemplare der Datei. Aber im SQL-Server-Verzeichnis nicht. Schon komisch.

Immerhin sind die gefixten Probleme recht spektakulär: man kann durch manipulierte Bild-Dateien eine Code-Execution reinschmuggeln (in BMP-, WMF-, GIF- und EMF-Dateien, sowie durch Farbverläufe, die auf VML basieren). Klar, mit den SQL-Server-Werkzeugen werden ja auch so viele Bilder angezeigt. Gibt es überhaupt eine Stelle, in den SQL-Server-Tools, die Bild-Dateien des Anwenders anzeigen? Das muss ich verpasst haben. Ich vermute, man muss schon Dateien des SQL-Servers austauschen. Was aber ohnehin nur Admins dürfen.

15. September 2008 um 21:33

Wieder gelandet

Die Landung in der Arbeit fiel heute etwas heftiger aus. Neben den vielen Mails traf mich heute auch erstmals die Budgetplanung für 2009. Ich glaube, dass es weniger schwierig wäre, wenn man öfters machen würde. Vielleicht sollte ich das Budget für 2010 gleich nächste Woche planen? Immerhin gab es ja auch schon mal Ansätze die Planung für 7 Jahre im voraus zu machen…

8. September 2008 um 12:40

Bill und Jerry im Schuh-Discounter

Im Rahmen der neuen Microsoft-Werbekampagne zur Verbesserung des Images ist nun der erste Werbe-Clip im Netz. Irgendwie putzig, aber was ist die Botschaft?

Naja, vielleicht muss ein Clip keine Botschaft haben. Man sagt ja von Bill Gates, dass er an einer leichten Form von Autismus leidet (Asperger Syndrom, auch als "Little Professor Syndrome" oder "Geek Syndrome" bekannt). Keine Ahnung, ob das stimmt, aber das erklärt, warum er immer so steif und menschenscheu ist.

8. September 2008 um 12:19

Jäger des verlorenen Datenträgers

Gut ein Jahr nach dem Verlust dürfen die Ermittlungsbeamten rausfinden was mit einem Datenträger passierte, der ungewöhnlich brisante Daten enthält: Adressen und Namen. Immerhin findet jetzt auch mal ein Ministerium, dass diese Daten schützenswert sind.

Wie die Times am heutigen Sonntag berichtet, könnten die auf der Festplatte gespeicherten Details zu Gefängniswärtern und Bewährungshelfern dazu führen, dass die betroffenen Personen ihren Arbeitsplatz und den Wohnort wechseln müssen – bezahlt werden müssten die Maßnahmen womöglich vom Steuerzahler.
Laut Times wird die Festplatte, die insgesamt 45.000 Datensätze zu Mitarbeitern der britischen Justizbehörden enthalten soll, allerdings bereits seit einem Jahr vermisst.

Warum das "IT-Dienstleistungsunternehmen EDS" diese Daten überhaupt hatte und ob der Datenträger verschlüsselt war, wird leider nicht thematistiert.

6. September 2008 um 17:03

Flucht

Puh, unten tobt gerade ein Kindergeburtstag: 8 Mädels. Ich muss jetzt gerade mal vor dem Topfschlagen flüchten. Da ist eine Runde Clusterz genau das richtige…

4. September 2008 um 10:58

Heroes

Microsoft unterstützt die "Community"-Bildung regelmäßig durch allerlei Aktionen. Durch eine Info von Klaus Oberdalhoff wurde ich auf "Heroes happen here" aufmerksam. In diesem Rahmen werden beim nächsten SQL-Pass-Vortrag in Nürnberg (Thema "Data-Mining mit dem SQL-Server") am 9.9.08 eine ganze Reihe von Softwarepaketen verlost:

  • drei Heroes-Pakete (not for resale) mit jeweils einer 2008-er Lizenz von Visual Studio Standard, Windows Server Enterprise und SQL Server Standard,
  • ein Windows Vista Ultimate (not for resale) und
  • eine SQL Server Readiness DVD (not for resale)

Das finde ich ganz schön beachtlich! Deswegen habe ich mal geschaut, was Microsoft zu der Aktion schreibt und stieß als erstes auf eine recht amüsante Comic-Reihe von Microsoft. Die restlichen Infos fand ich nicht so ergiebig…