Glorf.it

Glorf IT

Bedenkliches aus dem IT-Alltag

9. November 2006 um 23:48

Perscheid-Fan wird kräftig zur Kasse gebeten

Da fällt mir doch gar nichts mehr dazu ein. Einerseits erlaubt Herr Perscheid die Verwendung seiner Bildchen für nicht-kommerzielle Sites, andererseits verklagt seine Agentur einen Fan auf 20 KiloEuro Schadenersatz, weil er genau das getan hat!
Ist das noch legal oder erfüllt das schon irgendeinen Tatbestand?

Aus Protest erfolgt hier kein Link auf die Perscheid-Seite.

gefunden bei heise-online

9. November 2006 um 00:11

Syntax ist nicht alles im Leben…

Bei SqlTeam.com habe ich ein verblüffendes Beispiel für unerwartete Syntax-Ergebnisse gefunden:

SELECT 123.654,
123e6,
123d4,
'123'e4,
123'col2',
1a

Das liefert erstaunlicherweise:

(no column name) (no column name) d4 e4 col2 a
123.654 123000000 123 123 123 1

So Parser liefern schon mal komische Ergebnisse. Ich habe mal versucht den LEXX und YACC zu verstehen, aber es dann recht schnell aufgegeben. Immerhin ist klar, dass der SQL-Server die Buchstaben nach den Nummern als Aliase interpretiert. Das "Wort" hört für ihn nach der Zahl auf.

8. November 2006 um 21:23

SQL Playback Programm

Was im ersten Moment wie eine neue Idee für ein Musikportal klingt, ist in Wirklichkeit eine gute Idee zur Qualitätssicherung.
Microsoft möchte gerne automatisierte Tests mit echten Daten und echten Anwenderszenarien durchführen. Damit können sie bei zukünftigen SQL-Server-Hotfixes und -SPs einfach ein "Replay" der eingeschickten Profiler-Traces machen und sehen, ob irgendwelche Fehler auftreten. Das ist zwar für uns Kunden schon einiger Aufwand (Auswahl der Szenarien, Aufzeichnen, Testen, einschicken), aber dürfte sich auch für uns lohnen, damit wir nicht erst einen Bug anmelden müssen, wenn der SP erst mal da ist.

Details beschreibt Steffen in seinem Artikel "SQL Playback Programm – Ihre Workload als Test für zukünftige SQL Server Versionen".

Das machen wir übrigens auch seit einigen Jahren, allerdings ist das wegen des notwendigen Datenschutzes nicht ganz so einfach: Man benötigt für einen genau festgelegten Zeitraum die schriftliche Erlaubnis des Anwenders, die Rechner dürfen nicht im Firmennetz hängen, müssen in speziell gesicherten Räumen stehen, muss danach alle Kopien "erasen" (einfach Löschen reicht nicht) und muss die Datenträger zurückschicken (oder darf sie im Auftrag des Kunden gleich zur Vernichtung schicken).

Trotz des ganzen Theaters lohnt sich der Aufwand: in unseren "normalen" Tests finden wir eben doch nicht alle Probleme…

8. November 2006 um 21:02

Die zwei Programmierer: Wer ist besser?

Als ich "The Parable of the Two Programmers" las habe ich mich natürlich für den jungen Newcomer gefreut. Und den Kopf geschüttelt als ich das Ende las.
Aber wenn ich es (ganz hypothetisch) aus der Sicht des Managers sehe, dann hätte ich von dem Jungen wegen seiner Arbeitseinstellung wohl auch nicht so doll viel gehalten, obwohl er eindeutig der Intelligenteste von allen war. Intelligenz alleine macht eben noch keinen guten Mitarbeiter aus. Aus der "globalen Sicht" also mit dem Vergleich zum anderen Team sieht das natürlich anders aus. Dann sieht es so aus als ob es sicher einen Versuch wert wäre so einen Genius "auf Linie" zu bringen.

Leider ist es im zweiten Fall (also bei dem Team) für einen Managers noch viel schwerer zu erkennen, dass das Team hier "überzogen" implementiert hat. Aber es ist ja zum Glück nur eine Parabel….

gefunden bei TheDailyGrind

8. November 2006 um 20:57

Indexes am SQL-Server-2005: nicht alles geht "online"

Durch die aktuelle Ausgabe des SQL-Server-Magazine wurde ich auf ein Problem aufmerksam: Wenn man LOBs (Large Objects) in einem Index speichert, dann kann man verschiedene Dinge nicht tun. Dazu reicht es schon, wenn das LOB-Feld nur auf der Index-Seite gespeichert ist, bspw. beim Clustered-Index.

online operations

Dazu steht in den "Guidelines for Performing Online Index Operations":

When you perform online index operations, the following guidelines apply:
Clustered indexes must be created, rebuilt, or dropped offline when the underlying table contains large object (LOB) data types: image, ntext, text, varchar(max), nvarchar(max), varbinary(max), and xml.

Kimberly L. Tripp beschreibt es in dem SQL-Server-Magazine-Artikel "Database Design for Performance" noch etwas genauer:

SQL Server 2005 allows any column to be in the leaf level of an index—including LOB types. If a LOB type is in the leaf level of an index, the index won't support online operations.

Das gilt also auch für Clustered-Indexes und betrifft im Wesentlichen "ALTER INDEX REBUILD". Wenn es rechtzeitig vorher weiß, dann sollte das kein Problem sein. Dann kann man nötigenfalls die Tabelle auf zwei aufteilen…

unerwartete Fehlermeldung

Meines Erachtens besteht aber auch ein Zusammenhang zu folgendem Phänomen: In bestimmten Fällen erscheint bei einem Update eine unerwartete Fehlermeldung:

The query processor could not produce a query plan from the optimizer because a query cannot update a text, ntext, or image column and a clustering key at the same time.

bzw.

Msg 8629, Level 16, State 3, Line 1 – Warnung: Der Abfrageprozessor konnte aus dem Optimierer keinen Abfrageplan erzeugen, da eine Abfrage nicht gleichzeitig eine text-, ntext- oder image-Spalte und einen Gruppierungsschlüssel aktualisieren kann.

Um bei einem UPDATE in das Problem zu laufen, müssen folgende Bedingungen erfüllt sein:

  • Die Tabelle hat einen Clustered Index.
  • Die Tabelle hat wenigstens ein Feld vom Typ IMAGE, NTEXT, TEXT, NVarchar(max), Varchar(max), Binary(max) oder XML.
  • Der Inhalt des Feldes wird nicht in dem Datensatz gespeichert.
  • Der Zugriffsplan ist so ausgelegt, dass mehrere Datensätze geändert werden (selbst wenn tatsächlich nur einer da ist).

-- ggf. Testtabelle löschen
if object_id('tempdb..#t1') is not null
drop table #t1
go
– Testtabelle anlegen
create table #t1 (
c1 int not null,
c2 int not null,
primary key clustered (c1,c2),
c3 text null,
c4 int identity)
go
– Tabelle mit Testdaten füllen
insert #t1 values (1,7,'test')
go
– Das geht problemlos:
update #t1 set c2=10, c3='test again' where c2=7
go
– Die Fehlermeldung verursachen:
update #t1 set c2=10, c3=replicate('x',8000)+replicate('y',8000) where c2=7

go
– ggf. Testtabelle löschen (aufräumen)
if object_id('tempdb..#t1') is not null
drop table #t1

Als Abhilfe kann ich zwei Möglichkeiten anbieten:

  1. Den Custered Index entfernen oder in einen "normalen" Index ändern.
  2. Das Statement wird in zwei Einzelteile zerlegt: einen auf die LOB-Spalten und einen auf die anderen.

8. November 2006 um 12:17

Process Monitor v1.0

Es gibt Neuigkeiten von Sysinternals. Nach dem Kauf durch MS hatte ich nicht ernsthaft mit neuen Tools gerechnet. So kann man sich täuschen…
In der TechnNet gibt es jetzt sogar einen eigenen Bereich "Sysinternals"!

Dort steht seit zwei Tagen das neue Killer-Tool für alle Windows-Entwickler:

Process Monitor is an advanced monitoring tool for Windows that shows real-time file system, Registry and process/thread activity. It combines the features of two legacy Sysinternals utilities, Filemon and Regmon, and adds an extensive list of enhancements including rich and non-destructive filtering, comprehensive event properties such session IDs and user names, reliable process information, full thread stacks with integrated symbol support for each operation, simultaneous logging to a file, and much more.

Hier gibt mehr Infos zum Process Monitor und den Download .

gefunden bei heise.de

7. November 2006 um 23:54

Microsoft SQL Server 2005 Compact Edition

Mein heutiges Aha-Erlebnis war eindeutig die "Microsoft SQL Server 2005 Compact Edition" (Version 3.1), die bei TheDailyGrind erwähnt wurde…

Die Lösung ist ganz einfach: der ehemalige Name war "SQL Server 2005 Everywhere Edition" (Version 3.1 Beta und CTP) und davor "SQL Server 2005 Mobile Edition" (Version 3.0) und davor "SQL Server CE" (Version 1.0 und 2.0).

SQL Server 2005 Compact Edition, was previously named SQL Server 2005 Everywhere Edition during the product development phase. Customers have communicated to Microsoft through the pre-release community technology preview (CTP) program and other channels that this product name may cause potential confusion with other database product names in the industry. Microsoft has taken this feedback seriously and has accordingly changed the official product name.

Da ich mal ein großer Fan des Sybase SQL Anywhere war, gebe ich das als Tipp ab für die Aussage "this product name may cause potential confusion with other database product names".

Hier geht es zum Download der Microsoft SQL Server 2005 Compact Edition (RC1).

Wer mal testweise damit rumspielen will, der sollte sich das Dokument "Prepare for SQL Server Everywhere Edition" ansehen. Wirklich gut.

7. November 2006 um 20:53

E-Mail-Notifications als Ziel von Angriffen?

Heute hat jemand auf ziemlich amateuerhafte Weise versucht die Anmeldung zur E-Mail-Benachrichtigung dieses Blogs als SPAM-Schleuder zu missbrauchen. Der Betreffende muss offenbar noch etwas üben. Damit er es nicht auf meinem Blog tut, habe ich mal die E-Mail-Benachrichtigung abgeschaltet…

7. November 2006 um 20:50

Der Prophet gilt nichts im eigenen Lande

Wer von Euch auch in einer nicht ganz so kleinen Firma arbeitet, kennt das Problem vielleicht auch… Ich habe es leider schon ziemlich häufig erlebt. Die Vorschläge von Kollegen aus anderen Abteilungen werden normalerweise ignoriert, schlechtere Ideen von externen Beratern hingegen gefeiert:

Heute bezeichnen Management-Berater dieses Phänomen als „Präferenz für externes Wissen“ – und beobachten es regelmäßig in Unternehmen: Ideen werden dann besonders ernst genommen, wenn sie von externen Beratern stammen oder von Konkurrenten. Selbst entwickelte Konzepte haben es im Vergleich dazu oft schwer.

Das stimmt leider. Ich habe seit Jahren die Erfahrung gemacht, dass ich mir den Mund fusselig reden kann, aber die Teams sich schwer tun den Rat von jemandem aus unserer Abteilung anzunehmen. Wenn ich hingegen Zitate von irgendwelchen Experten, die sowieso nur Datenbank-Spezialisten kennen, bringe und dann deren "Ideen", die sich "zufällig" mit meinen decken, vorstelle, dann fällt es den Zuhörern viel leichter den Rat anzunehmen. Das ist schon irgendwie seltsam… Die Ursachen, die in dem Artikel "Management-Erkenntnisse aus der Bibel" beim Handelsblatt beschrieben werden, leuchten mir aber völlig ein:

Gute Ideen eines eigenen Kollegen nehmen viele Mitarbeiter vor allem als Bedrohung wahr. Wenn man von seinem Büronachbarn lernt, gesteht man sich schließlich ein: Dieser hatte bessere Ideen.

Meine Kollegen und ich spielen quasi in der gleichen Liga. Wenn ich jetzt die Ideen von "anerkannten externen Experten" vorstelle, dann sind wir alle zusammen die Lernenden, keiner steht "über" dem anderen. Das ist schon spannend…

gefunden bei Robert Basic

7. November 2006 um 20:43

Backup-Song

Yesterday (nach der Melodie von den Beatles)

Yesterday,
All those backups seemed a waste of pay.
Now my database has gone away.
Oh I believe in yesterday.

Suddenly,
There's not half the files there used to be,
And there's a milestone hanging over me
The system crashed so suddenly.

I pushed something wrong
What it was I could not say.
Now all my data's gone
And I long for yesterday-ay-ay-ay.

Yesterday,
The need for backups seemed so far away.
I knew my data was all here to stay,
Now I believe in yesterday.

Diesen Song habe ich mal Anfang der 90er aus irgendeiner PC-Zeitschrift kopiert, habe leider vergessen aus welcher…

6. November 2006 um 21:30

übersichtlicher Feature-Vergleich der Editionen des SQL-Server-2005

Weil ich den Feature-Vergleich der Editionen des SQL-Server-2005 in letzter Zeit immer wieder benötige, poste ich den Link an dieser Stelle einfach mal. Vielleicht haben ja einige von Euch den Link bei Steffen seinerzeit verpasst:

Die Seite in den BOLs ist Features Supported by the Editions of SQL Server 2005
erheblich übersichtlicher als unter der Produkt-Übersicht (SQL Server 2005 Features Comparison).

6. November 2006 um 21:29

Power-Point

Vorgestern blieb ich beim Radiozappen im Deutschlandfunk bei einem sehr amüsanten Beitrag über "Power-Point-Women und um sie herumwuselnde P-Guys" hängen. Da wurde gut beschrieben, dass es heutzutage zum guten Ton gehört, dass jeder Vortragende einen dicken Stapel Power-Point-Folien auf einem Beamer präsentiert. Meist nur abliest und dabei auch noch denkt, er/sie würde einen tollen Vortrag halten…

Leider gibt es bei uns in der Firma auch die Unsitte, dass jeder Foliensatz den gesamten Inhalt als Text enthalten muss, "damit man den Inhalt auch versteht, wenn jemand anderer die Folien hinterher liest, ohne beim Vortrag gewesen zu sein." Dabei tun mir Text-Wüsten immer weh, denn ich liebe "reiche" Folien die Vorgänge oder Zusammenhänge anschaulich darstellen, am liebsten nur mit der Botschaft drüber und sonst ohne Worte.

Aber dennoch gehöre ich ganz offensichtlich zu den "P-Guys"… 😉