Glorf.it

Glorf IT

Bedenkliches aus dem IT-Alltag

31. Juli 2006 um 23:53

Eine grobe Fehleinschätzung

Jahrelang hörte man oft davon, dass bestimmte Dienstleistungen im Ausland eingekauft wurden: Software made in Indien oder Malaysia. Jetzt geht der Trend hin zu den östlichen europäischen Ländern. Nach meinen Erfahrungen gestaltet sich der Informationsaustausch in der Regel aber mehr als schwierig. Das Tchechen oder Polen immer entweder gut englisch oder deutsch sprechen, stimmt nach meiner Erfahrung überhaupt nicht. Am besten klappt unsere Zusammenarbeit noch mit den Italienern, aber die sind weder im Osten noch billiger als wir… 😉

Das im Osten auch nicht alles so gut und billig produziert werden kann, weiss ich seitdem mein Freund Michael auf dem Weg zu seinen tchechischen Kunden ab und an bei uns Station macht. Er leitet eine kleine deutsche Spritzguss-Firma (Familienbetrieb). Was die Kunden schätzen ist das gute Preis-/Leistungsverhältnis: Gute Qualität zu bezahlbaren Preisen.

Leider hört man viel zu wenig von Firmen, die im Ausland schlechte Erfahrungen gesammelt haben. Hier mal eine seltene Ausnahme: heute.de – Eine grobe Fehleinschätzung

31. Juli 2006 um 21:29

irre Höhlen in Russland

Bei debri.ru gibt es irre Bilder von ?russischen? Höhlen. Ich muss unbedingt mal dran denken und mir von Vladimir übersetzen lassen, was die Texte bedeuten:
ПDEBRI.RU

31. Juli 2006 um 20:46

Vorgehen bei Datenbank-Reparaturen (Teil 2a)

Im ersten Teil der Reihe zum Vorgehen bei Datenbank-Reparaturen wurde erklärt, wie man vorgehen kann, wenn man eine Datenbank an einen SQL Server 2000 anhängen will, das aber nicht klappt, weil die Datenbank kaputt ist.

In diesem Teil geht es darum, wie man vorgehen kann, wenn das Transaktionslog defekt ist oder es von jemandem gelöscht wurde, der es für eine "ganz normale Log-Datei" hielt, die man ruhig löschen kann. Diese Irrlehre hält sich noch in einigen Köpfen… 😉

Wenn das Transaktionslog futsch oder defekt ist, muss man beachten das eine inkrementelle Sicherungsstrategie damit schwere Rückschläge bekommt. Mann muss sofort nach der Reparatur eine Voll-Sicherung durchführen. Wie man bei der Wiederherstellung vorgeht, hängt vom Zustand der Datenbank ab. Wenn die Datenbank ordentlich geschlossen wurde und das Tranlog defekt ist, dann hat man sehr gute Chancen ohne Datenverluste aus der Geschichte rauszukommen. Wichtig ist immer, dass man vor dem Beginn der Analyse Kopien der Datenbank-Dateien anfertigt! Ich rate dazu den SQL Server zu stoppen und auch die Master-Dateien zu sichern.

Beispiel aus der Praxis: Ein Mitarbeiter hat etwas zu viel gelöscht. Jetzt wird der Admin gebeten die Sicherung vom Vortag wieder einzuspielen. Der Admin überschreibt die Dateien von heute mit der Sicherung von gestern (Festplattenvollsicherung bei gestopptem SQL Server, benutzt wird Simple Recovery Mode). Unerklärlicherweise lässt sich die Datenbank danach nicht zugreifen. Analyse: Tranlog-Datei völlig geschrottet. Die Datenbank wurde als suspekt markiert, weil kein Recovery durchgeführt werden konnte.

In diesem Beispiel kann man vergleichsweise einfach zum Ziel kommen. Die Datenbank-Datei wurde ordnungsgemäß geschlossen. Daher enthält das Tranlog keine Infos, die nicht schon in der Datenbank eingepflegt wurden. Man kann den SQL Server "einfach" ein Neues anlegen lassen:

(1) SQL Server stoppen, LDF umbenennen (oder löschen, man hat ja eine Kopie), SQL Server starten.

(2) Datenbank trennen und nur mittels der MDF wieder anhängen:

exec sp_detach_db 'MyCrashDB'

exec sp_attach_single_file_db 'hahaha',
'e:\Programme\Microsoft SQL Server\MSSQL$MYLITTLESQL\data\MyCrashDB.MDF'

Man bekommt beim Anhängen zwar einen Fehler, aber die Datenbank lässt sich prima wieder anhängen.

Device activation error. The physical file name 'e:\Programme\Microsoft SQL Server\MSSQL$MYLITTLESQL\data\MyCrashDB_log.LDF' may be incorrect.
New log file 'e:\Programme\Microsoft SQL Server\MSSQL$MYLITTLESQL\data\MyCrashDB_log.LDF' was created.

Und fertig ist die Lauge. Herzlichen Glückwunsch. Man sollte danach in jedem Fall eine neue Datensicherung machen. Nicht nur, wenn man ein inkrementelles Backup verwendet.

Im nächsten Teil geht es dann darum, was man macht, wenn die Datenbank nicht sauber heruntergefahren wurde.

30. Juli 2006 um 17:46

Lohnsteuererklärung unterwegs

Hurra!
Elster
Die Lohnsteuererklärung für 2005 ist jetzt unterwegs! Das kostet mich immer den letzten Nerv. Dieses Mal müssen wir sogar etwas nachzahlen. Das erhöht die Motivation ungeheuer…

Trotz der elektronischen Erklärung müssen wir noch allerlei Belege hinterher schicken, zum Glück nur die gesetzlich notwendigen. Da ich keine Ahnung habe, welche noch "notwendig" sind, schicke ich einfach alles ab, was wir deklariert haben. Warum ich es trotzdem elektonisch mache (mit Elster)? Weil ich hoffe, dass es schrittweise immer besser wird… Ich bin halt Optimist.

Immerhin amüsiere ich mich jedesmal über den Namen: Elster.
Hat sich da jemand diebisch auf Kosten des Finanzamtes amüsiert oder haben die Beamten hier Humor gezeigt?
Meine Eltern haben mir übrigens ein "Austrittsformular" angeboten, dass ich der Steuererklärung beilegen soll: Ich möchte aus Ihrem Verein austreten und keine Beiträge mehr zahlen…

30. Juli 2006 um 09:39

Tipps zum legalen Brennen von Musik-CDs von der BITKOM

Unter der Überschrift Tipp des Monats gibt die BITKOM Tipps zum legalen Brennen von Musik-CDs. Den Kommentar bei netzpolitik.org dazu fand ich so gut, dass ich mir den eigenen Kommentar schenke… 😉

30. Juli 2006 um 09:34

Primärschlüssel-Felder aus INFORMATION_SCHEMA-Tabellen ermitteln

Gestern fragte jemand in der Newsgroup microsoft.public.de.sqlserver wie man die Primärschlüssel-Felder aus INFORMATION_SCHEMA-Tabellen ermitteln kann.
So geht:

select CU.COLUMN_NAME
from INFORMATION_SCHEMA.KEY_COLUMN_USAGE as CU
join INFORMATION_SCHEMA.TABLE_CONSTRAINTS as TC
on CU.CONSTRAINT_CATALOG=TC.CONSTRAINT_CATALOG
and CU.CONSTRAINT_SCHEMA=TC.CONSTRAINT_SCHEMA
and CU.CONSTRAINT_NAME=TC.CONSTRAINT_NAME
where CONSTRAINT_TYPE = N'PRIMARY KEY'
and TC.TABLE_CATALOG = N'AdventureWorks'
and TC.TABLE_SCHEMA = N'Person'
and TC.TABLE_NAME = N'MyAddress'
order by ORDINAL_POSITION asc

Damit bekommt man eine Liste der Felder in der richtigen Reihenfolge.

29. Juli 2006 um 13:35

Selektives Lesen

Gestern sprach mich ein Kollege auf mein Posting zum Umgang mit Zeitschriftenumläufen an. Bei ihm stapelt sich die eine oder andere Zeitschrift. Darunter etwa 8 Computerwochen, die vermutlich niemand mehr lesen mag, wenn er sie erst 3 Monate nach Erscheinen bekommt (habe ich abbestellt). Er fragte mich, wie ich es schaffe die Zeitschriften spätestens 2 Tage weiterzugeben.

Ich habe keine allgemeingültigen Antworten, aber hier sind meine Lösungen:

  • Zeitschriften mit Artikeln, die ich richtig "durcharbeiten" muss und möchte, habe ich entweder privat abonniert und kann sie so lange lesen, wie ich mag, z.B. ct.
  • Oder wenn mir das zu teuer ist (wie beim SQL Server Magazine), dann lese ich die interessanten Artikel während der Zugfahrt. Sollten dauerhaft "notwendige" Themen dabei sein, notiere ich mir den Titel/Ausgabe und ein Stichwort. Falls ich später mal Infos zu dem Thema brauche, finde ich diese oder ähnliche Infos in der Regel auch später irgendwo im Internet. Dann muss ich den Artikel nicht sofort lesen.
  • Wenn die Zeitschrift (für registrierte Kunden) eine Möglichkeit bietet die Artikel online zuzugreifen, dann nutze ich das. Manchmal speichere ich die Seiten dann thematisch sortiert ab. Zum Beispiel bei "TecChannel" (hier speichere ich nur die Links) oder "SQL Server Magazine".
  • Ich versuche nur die Artikel zu lesen, die mir neue Impulse geben, dessen Inhalte mich jetzt oder in naher Zukunft betreffen oder dessen Themen mir Spaß machen.
  • Wenn es sich um Zeitschriften handelt, die ich nur "abonniert" habe, um über Trends, Neuheiten und Stimmungen informiert zu werden, dann überfliege ich nur den News-Teil und das Inhaltsverzeichnis. Ich vermeide das Durchblättern der Zeitschrift, sondern lese selektiv.

Zeitschriften, die ihr Fähnchen nach dem Wind schwenken, lese ich nicht mehr. Damit meine ich Zeitungen, die als Hauptinfoquelle die Veröffentlichungen von Firmen hernehmen. z.B. in einer Ausgabe "SOA ist groß im Kommen" (Hintergrund: Firma XY hat ein neues Produkt dafür auf den Markt geworfen) und in der übernächsten "SOA noch nicht reif für den Markt" (Hintergrund: Konkurrent von XY hat eine Studie erstellt).

Wenn ich es recht bedenke, dann sollte meine Vorgehensweise für einfrige Blog-Leser keine Neuigkeit sein. Die Auswahl der Infos aus den tausenden von Blogs stellen ja noch eine viel größere Herausforderung dar. Allerdings gibt es dafür schicke Tools… 😉

28. Juli 2006 um 21:55

Was bringen CheckDB-Läufe?

Vor ein paar Tagen hat Paul Randall in seinem Artikel Can't I ever get a guarantee? diskutiert, ob man sicher sein kann, dass alles OK ist, wenn der DBCC-CheckDB-Lauf keine Fehler meldete. Er weißt zu Recht darauf hin, dass seit der Prüfung der ersten Seiten inzwischen genau dort ein Problem aufgetreten sein könnte. Das ist natürlich etwas spitzfindig, aber es ist nicht ganz von der Hand zu weisen. Generell bringt sie aber schon eine deutliche Sicherheit, ob das was man sichern will, auch OK ist.

Kann eine Prüfung schaden? Als wir noch den Sybase SQL-Anywhere einsetzten, kam einmal der Verdacht auf, dass eine Datenbank durch die Prüfung zerstört worden sein soll. Dazu muss man wissen, dass man ihn so einstellen kann, dass die Datenbank-Dateien generell geschlossen sind und nur geöffnet werden, wenn jemand darauf zugreift. Zwischen zwei Prüfläufen wurde die Datenbank angeblich nicht angfasst und dennoch war sie bei der vorletzten Prüfung OK und bei der Letzten wurde ein Fehler gemeldet.

Wenn man etwas wackelige Hardware einsetzt, z.B. ein defektes RAM im RAID-Controller, dann kann es schon sein, dass die Datenbank durch das Öffnen/Schließen und den damit verbundenen Checkpoints defekt wird.
Aber bevor ich wegen dieser Möglichkeit mein Sicherungskonzept überdenke, würde ich lieber vor der Datenbank-Prüfung eine Hardware-Prüfung durchführen…

27. Juli 2006 um 23:09

gefühlte Wahrscheinlichkeit

In einem Kommentar zu einem WebLog-Eintrag in dem Peter beschreibt, wie er mit seinem Fahrrad einen schweren Sturz hatte, schreibt Michael St.Pierre etwas ganz Interessantes. Wenn ich recht bedenke, dann predige ich in einem ähnlichen Bereich auch schon seit Jahren und scheitere: "Mache regelmäßig Backups"

Das psychologische Problem dabei ist halt, dass es Menschen (also nicht nur dir) ganz grundsätzlich schwer fällt, aus seltenen Ereignissen Konsequenzen für das eigene Handeln zu ziehen. Man kennt soetwas wie “gefühlte Wahrscheinlichkeit”, und die ist immer deutlich günstiger (also seltener oder häufiger, je nachdem) für denjenigen, der konkrete Änderungen seines Verhaltens vornehmen sollte. Einen Fahrradhelm braucht man wirklich nur 1-maximal 2 mal im ganzen Leben, dann aber entscheidet es sich, ob du aufstehst, den Staub aus den Kleidern schüttelst und deine Schürfwunden versorgst, oder ob du aufgrund einer Hirnblutung mit bleibenden neurologischen Ausfällen leben wirst müssen (oder eben auch nicht mehr lebst) ;-( .

Quelle: Sand in der Kurve…

Die gefühlte Wahrscheinlichkeit ist einfach so gering, dass man es nicht einsieht ein Backup zu machen: Der Rechner ist doch fast ganz neu! Leute, die dauernd mit denen zu tun haben, die kein Backup haben, aber eines gebraucht hätten, denken da eben anders darüber…

Vielleicht nehme ich jetzt doch meinen Helm auch dann, wenn ich zum Bahnhof fahre… 😉

27. Juli 2006 um 20:06

2,5 Millionen Kinder leben in Armut

Als ich es gerade auf NTV hörte, dachte ich zuerst es sei von irgendeinem Land die Rede. Aber es ist wohl tatsächlich so, dass 2,5 Millionen Kinder in Deutschland auf Sozialhilfeniveau oder darunter leben.

In der Presse finden sich auch diverse Artikel zu dem Thema:

Das finde ich unheimlich schockierend! Werden diese Kinder es schaffen trotz der widrigen Umstände eine gute Schulbildung zu bekommen? Bekommen sie genug zum Essen? Besteht die Gefahr, dass sie verwahrlosen? Gut, das ist vielleicht ein wenig krass formuliert, aber meiner Ansicht nach hängen die Bildungschancen in erster Linie von den Eltern und dem Umfeld der Kinder ab.

Natürlich können und müssen wir im Kleinen gegensteuern, aber wo geht es mit unserer Gesellschaft hin?

27. Juli 2006 um 19:25

Beispiel für SQL Server Everywhere

Heute habe ich mich daran gemacht und ein Beispiel für den "SQL Server Everywhere" gestrickt, dass unter Windows XP läuft. Irgendwie habe ich mich damit ziemlich schwer getan, weil ich keine brauchbare Anleitung fand. Die Hilfe scheint sich nur auf den Einsatz auf "Windows Mobile" (oder wie das Windows CE jetzt heisst…) zu beziehen.

Erst mit dem Artikel Getting started with SQL Server Everywhere – C# Database aus "The Code Project" ging es dann voran. Jetzt bin ich ganz begeistert: wenn man weiss wie es geht, dann ist es ganz einfach… 😉

Update: Als ich gerade versuchte das ZIP von dort zu laden, schien es korrupt zu sein. Wenn es bei jemandem klappt, würde ich mich über eine Info freuen…

In den Kommentaren zu dieser Seite fand ich auch den Link zu diesem ganz guten Überblick-Artikel zur Everwhere-Edition. Diese Infos kann ich gut für meine Schulung gebrauchen.

Update^2: OK, man muss angemeldet sein, sonst wird nur die HTML-Seite (mit Endung ZIP) runtergeladen…

27. Juli 2006 um 01:13

Hacker's Wisdom

Neulich fiel mir der Artikel "Real Programmers Don’t Use Pascal" wieder in die Hände. Ein wunderbarer Artikel…

Bei Hacker's Wisdom findet man diesen Artikel online und noch viele weitere "Klassiker", z.B.

  • "How To Become A Hacker" von Eric S. Raymond, wobei hoffentlich jeder weiss, dass Eric mit Hacker die guten Programmierer meint (die bösen heißen "Cracker").
  • "The 10 Commandments for C Programmers" von Henry Spencer. Ich glaube das können nur Leute verstehen, die tatsächlich mal C programmiert haben… 😉

Da werde ich glatt nostalgisch… Andererseits gilt meines Erachtens in der EDV bislang noch der Spruch vom Opadeldok: "Früher war alles schlechter!"