Glorf.it

Glorf IT

Bedenkliches aus dem IT-Alltag

29. August 2007 um 12:35

SQL-Server-Hotfixes per WSUS installieren

Weil ich in einem anderen Blog gerade einen Beitrag zum Windows Server Update Services (WSUS) sah, fiel mir ein neues Feature ein, dass ich mit sehr gemischten Gefühlen sehe:

Man kann jetzt sicherheitskritische Hotfixes zum SQL-Server-2005 automatisch per WSUS installieren lassen. Dazu muss man dem WSUS lediglich sagen, dass er auch die SQL-Server-Hotfixes runterladen soll und auf welchen PCs er sie installieren soll.

Das ist von der Idee her ganz praktisch, aber hat doch ein paar "Herausforderungen":

  • Man kann nicht einzelne Instanzen angeben oder ausschließen. Das kleinste Korn ist der Rechner.
  • Der Update-Client muss in einem Benutzerkontext laufen, der Adminrechte hat. Andernfalls wird der Hotfix-Update gestartet, kopiert schon mal fleißig los, kann sich nicht zum SQL-Server verbinden und beendet daraufhin den SQL-Server-Dienst. Der Stand ist danach völlig inkonsistent. MS hat es abgelehnt das als Bug anzuerkennen.
  • Zukünftig (zuerst nur für SQl-Server-2008) werde ein Feature genutzt mit dem sie auch dann Hotfixes installieren können, wenn der Dienste-Benutzer keinen Zugriff zum SQL-Server hat.
  • Man weiß nicht, welche Hotfixes installiert werden sollen. Neulich wurde ein Hotfix ausgeliefert, der nicht sicherheitsrelevant war. In dem Security-Bulletin war er auch nciht erwähnt. Trotzdem wurde er installiert. Die Antwort von MS darauf war, dass es ein kritischer Hotfix sei und er deswegen ausgeliefert wurde. Woran man das erkennen könne? Na daran, dass er vom WSUS ausgeliefert wurde. Nein, das wird nicht dokumentiert.

Wenn man bedenkt, dass Gordon Mangione damals noch davon abriet einfach SP1 für den SQL-Server-2000 zu installieren. Man solle das erst mal auf einem Testrechner installieren, gründlich die Nebenwirkungen auschecken und dann geplant umsteigen. Dabei werden SPs sehr gründlich getestet, jedenfalls im Vergleich zu den Hotfixes. Und jetzt soll das ratzfatz am Server installiert werden? Wen fragt man zu Risiken und Nebenwirkungen der Hotfixes?

27. August 2007 um 13:56

Sicherheitsrisiko Festplatte?

Als ich den Heise.de-artikel "Seagate-Chef: "Die US-Regierung flippt aus"" las, lernte ich schon wieder eine Menge:

Laut New York Times warnt der Geheimdienst, Festplatten aus chinesischer Produktion könnten ein Sicherheitsrisiko darstellen. Deren Hardware oder Treibersoftware – vor allem bei verschlüsselten Laufwerken – ließe sich so manipulieren, dass dem Datenklau übers Netz Tür und Tor geöffnet werden könnten.

OK, wenn so eine Warnung von dem US-Geheimdienst kommt, dann nehme ich mal an, dass sie wissen wovon sie reden. Jetzt würde mich bloß noch interessieren, ob das schon jemals von einem Geheimdienst genutzt wurde. Und wenn ja, von welchem!

26. August 2007 um 11:11

SQL-Server: Parameter

Auf Jeff's Weblog fand ich den sehr guten Artikel "Always Use Parameters. Even if you don't use Stored Procedures., der mehrere gute Gründe beschreibt, warum es wichtig (nicht nur sinnvoll) ist, generell Parameter zu verwenden.

Neben der Performance spielt auch die Sicherheit – der Schutz vor SQL-Injektion – eine große Rolle. Seine Beispiele beziehe sich auf ADO.Net, aber das gesagte gilt meiner Ansicht nach uneingeschränkt für jedes API.

25. August 2007 um 12:47

Warum Entwickler enge Zeitvorgaben bekommen…

In den letzten Monaten habe ich in vielen Beispielen erlebt, warum Entwickler enge Zeitvorgaben bekommen. Das ist natürlich nicht repräsentativ und beruht auf meiner ganz subjektiven Wahrnehmung. Ich will damit auch nicht unterstellen, dass ein Vorgesetzter wirklich so denkt. Ich vermute aber dass wenigstens unterbewusst folgende Faktoren eine Rolle spielen. Erschwerend kommt hinzu, dass ich selber Entwickler bin… also bitte nichts Objektives erwarten.

Aber erst mal Hand aufs Herz: Entwickler machen den Job, weil er ihnen Spaß macht, oder? Ich kenne nur wenige Entwickler, denen es keinen Spaß macht Software zu entwerfen und zu schreiben. Gerade das autonome Arbeiten an kleinen überschaubaren Programmen (meist "Werkzeuge" genannt) ist beliebt.

Die meisten Entwickler haben eine deutliche Technik-Affinität. Dazu gehört auch der Einsatz und der Test von neuen Programmiertechniken. Entwickler sind fast ausnahmslos sehr genaue und präzise Menschen, die auch vor Details nicht zurückschrecken. Ist ja auch klar: Wenn man dem Blechkasten nicht genau sagt, was zu tun ist, dann läuft es nicht. Es soll sogar Entwickler geben, die von Betriebswirten als pedantisch empfunden werdenn. Die oben genannten Eigenschaften führen gerne dazu, dass Entwickler etwas einseitig wahrgenommen werden.

Meiner Erfahrung nach haben Entwickler aber auch noch eine andere hervorragende Eigenschaft: Sie können sich beliebig lange mit einem Problem/Programm beschäftigen ohne dass ihnen die Arbeit ausgeht…
Als Beispiel fällt mit das kleine Kaffee-Programm ein, dass jahrelang in unserer Abteilung zum Einsatz kam: Wer sich eine Tasse nahm, rief das Programm auf und auf dem Server wurde für die Person eine Tasse Kaffee gezählt. Bald wurde ein "Tassenfaktor" eingeführt, der den Preis je nach Größe der Tasse berechnete (einige Kameraden hatten vielleicht Schüsseln!). Natürlich ist das ein schlechtes Beispiel, weil Kaffee für Entwickler eine sehr hohe Bedeutung hat… ;.)

Ich habe es aber oft genug erlebt, dass ein Entwickler im Bemühen seine Aufgabe gut zu machen, wirklich viel Arbeit in eine ansonsten eher unbedeutendes Detail steckte. Danach ist das Programm echt klasse und sehr beeindruckend. Für die Aufgabe hätte aber eine ganz einfache Ausführung genauso gute Dienste geleistet. Aber wäre der Entwickler dann mit seiner Leistung zufrieden gewesen? Hätte ihm auch nach einem Jahr noch jemand auf die Schulter geklopft und sich beeindruckt gezeigt?

Jedem Chef dem es einmal passierte, dass ein Mitarbeiter aus seiner Sicht für so etwas seine Zeit "verplemperte", der wird seine Lehre daraus ziehen.

Ein anderes Beispiel: Ich erlebte mehrfach, dass ein Entwickler mit seiner Aufgabe so ausgelastet war, dass er keine Zeit mehr hatte, um die Doku auch noch zu machen. Dann müsse der Termin um drei Tage verschoben werden oder das Feature XY wegfallen werden, das gehe schließlich nicht. Also wurde vorerst keine Doku gemacht. Nach Ablauf der Frist war das Programm tatsächlich fertig, aber aus ganz dringenden Gründen war mal eben noch diese und jene Funktion eingebaut worden. Und das ohne Terminverschiebung oder etwas weglassen zu müssen.

Was wird ein vernünftiger Chef das nächste Mal machen, wenn er die Aufgabe und Termine verteilt? Wird er großzügige Puffer einbauen und das den Entwicklern sagen?

24. August 2007 um 11:27

Animiertes Ladebildchen online generieren

Ein bewegtes Bildchen von AJAX-LoaderSeitdem es AJAX gibt (Ihr wisst was ich meine), kennt man die kleinen bewegten Bildchen, die als Pausenclown angezeigt werden. OK, sie sind meist nüchtern, aber hübsch. Wie ich feststellte gibt es einen Online-Dienst bei dem man selber solche Bildchen entwerfen kann: "Ajaxload – Ajax loading gif generator"

21. August 2007 um 12:10

fieser Fehler im Tablediff

Neulich stellte ich das Tool TableDiff des SQL-Servers-2005 vor. Leider hat es einen ganz fiesen Fehler:

Lässt man das Werkzeug TableDiff ein Fix-File ("-f") erzeugen, also ein Skript mit den INSERT/UPDATE/DELETE-Befehlen, die Datenbank 2 auf den Stand der ersten heben, dann können dabei fehlerhafte SQL-Befehle erzeugt werden. Die Werte vom Typ NUMERIC liefern falsche Ergebnisse, wenn das Tool von einem Benutzer mit deutschen Ländereinstellungen ausgeführt wird. Als Dezimalpunkt wird dann "," anstelle von "." verwendet, was in SQL natürlich syntaktisch falsch ist.

Anstelle von (numerischer Wert: 12.34)
INSERT INTO [dbo].[difftest] ([id],[num]) VALUES (1,12.34)
kommt leider (numerischer Wert: 12,34)
INSERT INTO [dbo].[difftest] ([id],[num]) VALUES (1, 12,34)

Microsoft erkannte den Bug recht schnell an. Der Entwickler hatte bei der Ausgabe einfach nur ToString() angegeben ohne daran zu denken, dass die Konvertierungsfunktion von den Ländereinstellungen abhängt. Er hätte einfach eine feste Ländereinstellung vorsehen sollen.

Microsoft hat einen Bugfix dazu abgelehnt. Jeder der das Tool in Europa einsetzen will, der muss sich etwas überlegen. Wer einfach seine Ländereinstellungen ändern kann, ist fein raus. Bei mir geht das nicht.
Ich werde mir so behelfen:

  • Ich legte einen lokalen Benutzer "englisch" an. Einmal musste ich mich anmelden und die Ländereinstellungen auf us-amerikanisch setzen.
  • Jetzt starte ich meine Dos-Box immer unter dem Benutzer. Wenn ich dann das Tablediff aufrufe, sind die Befehle richtig.
  • Dazu nutze ich eine kleine selbstgeschriebene RunAs-Variante, der man gleich ein Passwort mitgeben kann. So kann ich eine Verknüpfung hinterlegen, die die Dos-Box sofort (ohne lästigen Dialog) startet.

Das ist natürlich nur eine Notlösung, aber was soll man machen…

20. August 2007 um 12:16

Tastatur schlägt Wellen

Vielleicht sollte ich eine eigene Kategorie für "verrückte Hardware" machen…

Zuerst erkannte ich gar nicht, was an der Tastatur so besonders ist, aber wenn man es im Profil ansieht, dann erkennt man die "Welle" ganz deutlich…

Details bei Logitech

19. August 2007 um 12:55

Störungen

Bei dem Kurs "Menschen gewinnen, Anliegen erfolgreich vorbringen" neulich stieß mir eine Sache stark auf. Ich konnte das zu dem Zeitpunkt nicht genau festmachen, aber als ich heute auf der Heimfahrt wieder auf die Wendung "Störungen haben Vorrang" stieß, musste ich gleich wieder daran denken.

Der Referent sagte zu Beginn, was er gerne machen möchte , dass aber Störungen jederzeit Vorrang haben. Ich verstand seine Erklärung so, dass zwischenmenschliche Probleme gleich gelöst werden sollen, damit die Problem ausgesprochen und gelöst werden können. Das ist ganz in Ordnung und auch noch sinnvoll.

Bei einer Gelegenheit fragte eine Teilnehmerin, ob er etwas zum Thema XY sagen könne. Der Referent sagte höflich "Das hatte ich eigentlich nicht vor. Aber Störungen haben Vorrang. deswegen machen wir das jetzt." Mir stieß das enorm übel auf, wobei ich erst heute darauf kam, warum:

Ich empfand es irgendwie als arrogant, eine Bitte um Informationen als Störung zu bezeichnen. Weil er das aber sehr höflich sagte und das Thema dann freundlich präsentierte, konnte ich nicht genau festmachen, was mich nun so "störte". Es war doch toll, dass er so auf die Teilnehmerin einging. Zumal es ein wichtiges und interessantes Thema war. Daher schob ich es bei Siete und nahm mir vor nicht so empfindlich zu sein.
Heute las ich in einem Buch von Friedemann Schulz von Thun auch diese Wendung "Störungen haben Vorrang". Hier ging es jetzt aber wieder um Probleme im zwischenmenschlichen Bereich.

Die Frage/Bitte mag den Referenten gestört haben, aber es war nicht in Ordnung, das Fragen als Störung zu bezeichnen. Zumal er explizit zu Beginn ermunterte, getrost nachzufragen. Das hat einfach nicht zusammengepasst.

Zu einer Gelegenheit spielte unsere 3 jährige Tochter mal mit Autos. Da kam eine Bekannte, die immer wieder für gleichberechtigte Erziehung eintrat, auf sie zu und sagte "Das ist ja toll, dass Du so schön mit Autos spielst, obwohl Du ein Mädchen bist." Sie war sehr mit sich zufrieden, weil sie fand, damit unserer Tochter den Rücken gestärkt zu haben. Die war sich bis zu dem Zeitpunkt aber gar nicht bewusst, dass es ungewöhnlich ist, wenn Mädchen mit Autos spielen. Danach wusste sie es und spielte seltener mit Autos.

Im obigen Beispiel wusste jeder Teilnehmer, dass eine Zwischenfrage eine Störung für den Referenten ist… Das war es, was mich störte. 😉

18. August 2007 um 10:25

SQL-Server-Konfigurationsparameter

Mit der Abfrage

select name, is_dynamic, is_advanced, minimum, maximum, value, value_in_use, description
from sys.configurations

bekommt man übrigens die Liste der Konfigurationseinstellungen des SQL-Servers-2005. Interessant ist, dass man hier genau sehen kann, ob ein Parameter dynamisch ist oder nach der Änderung ein Neustart des Dienstes erforderlich ist.

"Value_in_use" ist der aktuell gültige Wert, "Value" ist der Wert, der zuletzt mit sp_configure eingestellt wurde.

17. August 2007 um 12:31

Unterschiede zwischen Freelancern und Angestellten…

Neulich beim ersten Treffen der SQL-PASS-Regionalgruppe Franken machte Christoph Stotz eine interessante Trennung zwischen Angestellten und "Freelancern". Seiner Aussage nach sind Freelancer naturgemäß eher daran interessiert Informationen mit gleichgesinnten auszutauschen und ein Netzwerk zu bilden. Das könnte schon stimmen, aber sind die meisten gefühlten Unterschiede nicht einfach Vorurteile?

Dazu habe ich mal ein paar Vorurteile der beiden Seiten gesammelt. Ob sie stimmen, möge jeder selber beurteilen… 😉

Angestellte finden, dass Freelancer…

  • … nicht die beste Lösung für das Unternehmen suchen, sondern nur das lokale Optimum.
  • … das Unternehmen und die Gepflogenheiten nicht gut genug kennen und daher keinen Wert auf "Corporate Identity" legen.
  • … lieber eine ganz neue Technologie einsetzen als etwas bereits in der Firma bestehendes verwenden.
  • … nur unter Zwang Sachen dokumentieren. Wer macht sich schon gerne ersetzbar?
  • … überbezahlt sind.

Freelancer finden, dass Angestellte…

  • … sie als Konkurrenz empfinden.
  • … sich nicht genug weiterbilden.
  • … das Gegenteil von innovativ sind.
  • … viel zu langsam arbeiten.
  • … Risiken scheuen.
  • … für viel zu wenig Geld zu arbeiten.

Habe ich etwas vergessen? Ich meine, außer den Gemeinsamkeiten…

15. August 2007 um 12:24

SQL-Server: Inhalt einer Datei einlesen

Kürzlich fragte mich ein Kollege, wie man denn am SQL Server den Inhalt einer Datei in ein Feld einlesen kann. Zufällig gibt es dazu am SQl-Server-2005 ein nettes neues Feature, dass man dazu missbrauchen äh gebrauchen kann…

Im folgenden Beispiel soll ein ASCII-File (nicht Unicode!) eingelesen werden, deswegen muss der Inhalt von Typ VARBINARY noch in den Typ VARCHAR konvertiert werden. Das gilt auch, wenn man das letztlich in ein Unicodefeld speichern will.

CREATE TABLE #bla (
id integer identity(1,1) NOT NULL primary key,
dateiinhalt varchar(max) not null)

INSERT INTO #bla(dateiinhalt)
SELECT CAST(bin as varchar(max)) FROM
OPENROWSET(BULK N'c:\test\ascii-file.txt', SINGLE_BLOB) AS a(bin)

select * from #bla

Risiken und Nebenwirkungen:

  • Um das einsetzen zu dürfen muss man entweder Admin sein oder die Verwendung von Openrowset auch für andere erlauben.
  • Die Datei muss für den SQL-Server erreichbar sein. Deswegen wird der Pfad aus der Sicht des SQL-Servers angegeben. Das bedeutet im einfachsten Fall, dass sie auf einer Festplatte des Servers liegt.
  • Falls der Server-Dienst in einem Benutzerkontext läuft, der auch Netzrechte hat, dann darf die Datei auch auf einer Freigabe liegen auf die dieser Benutzer Zugriffsrechte hat.
14. August 2007 um 12:28

unpassende Fragen

Neulich rief doch glatt jemand im Auftrage von Microsoft bei mir wegen einer Umfrage zur Zufriedenheit mit der Bearbeitung meines bei MS gemeldeten Problems an.
Das fand ich richtig nett. Was die gute Dame aus dem Konzept warf, waren allerdings zwei Dinge:

1. Ich hatte keine Ahnung welchen Fall sie meinte. Wahrscheinlich gehen die davon aus, dass man nur mal ein oder zwei Probleme bei MS meldet oder wenigstens gleich mit der Bearbeitungsnummer das richtige Problem verbindet.
Ich hatte gerade in letzter Zeit fast immer mehrere "Incidents" gleichzeitig geöffnet. Deswegen mussten wir erst mal rausfinden worum es ging. Es ging um den langweiligsten von allen: Wir hatten einen Bugfix angefordert, den sie nicht öffentlich zum Download bereit gestellt hatten. 🙁
"Wir", weil die Anforderung ein Kollege machte, der dann in Urlaub ging und ich den "Incident" übernahm als dann endlich die erste Antwort eintraf (mit richtigem Link, aber abgelaufenem Passwort).

2. Der ganze Vorgang wurde per Mail durchgeführt. In der Befragung wollte sie aber immer wissen, wie es um den Telefonkontakt stand: waren sie mit der Dauer bis zum ersten Anruf zufrieden, waren sie zufrieden wie sie telefonisch auf dem Laufenden gehalten wurden, waren sie mit der telefonischen Erreichbarkeit zufrieden, etc.
Außerdem sollte ich den Support-Mitarbeiter einschätzen: Wie freundlich war er, war er kompetent, usw. Wie soll ich das beantworten, wenn er mir per Mail einfach nur einen Link und ein Passwort schickte, das aber genau das war, was ich wollte?

Immerhin war es eine lustige Veranstaltung, weil wir es Beide mit Humor nahmen…