Glorf.it

Glorf IT

Bedenkliches aus dem IT-Alltag

28. Dezember 2006 um 17:25

SQL2005: TableDiff

Selbst wenn man sich die neue DevStudio-Edition "DBPro" (inkl. der netten Werkzeuge) nicht leisten mag/kann und einem die 180-Tage-Testversion zu groß ist, dann muss man nicht auf die Funktion TableDiff verzichten.

Dieses kleine Programm kommt mit dem SQL-Server-2005 mit und ist eigentlich für die Replikation gedacht. Es steht unter ":\Programme\Microsoft SQL Server\90\COM\tablediff.exe" zur Verfügung. Damit kann man den Inhalt einer Tabelle intelligent von einer DB in die andere kopieren.

Es bietet auch die Möglichkeit, einen echten Diff zwischen zwei Tabellen durchzuführen, auch zwischen 2000 und 2005. Im folgenden Beispiel habe ich der Übersichtlichkeit halber die Befehlszeile umgebrochen:

"C:\Programme\Microsoft SQL Server\90\COM\tablediff.exe"
-sourceserver "MyBigPC\MyYukon" -sourcedatabase "Northwind"
-sourceschema "dbo" -sourcetable "Orders"
-sourceuser sa -sourcepassword samplepwd
-destinationserver "MyBigPC\MyLittleSQL" -destinationdatabase "Northwind"
-destinationschema "dbo" -destinationtable "Orders"
-destinationuser sa -destinationpassword samplepwd
-f
Microsoft (R) SQL Server Replication Diff Tool
Copyright (C) 1988-2005 Microsoft Corporation. All rights reserved.

User-specified agent parameter values:
-sourceserver MyBigPC\MyYukon
-sourcedatabase Northwind
-sourceschema dbo
-sourcetable Orders
-sourceuser sa
-sourcepassword samplepwd
-destinationserver MyBigPC\MyLittleSQL
-destinationdatabase Northwind
-destinationschema dbo
-destinationtable Orders
-destinationuser sa
-destinationpassword samplepwd
-f

Table [Northwind].[dbo].[Orders] on MyBigPC\MyYukon and Table [Northwind].[dbo].[Orders] on MyBigPC\MyLittleSQL are identical.
The requested operation took 0,46875 seconds.

Wenn ein Unterschied besteht, dann sieht der Output so aus:

Table [Northwind].[dbo].[Orders] on MyBigPC\MyYukon and Table [Northwind].[dbo].
[MyOrders] on MyBigPC\MyLittleSQL have 26 differences.
Fix SQL written to DIFFIX.633029232857656250.sql.
Err OrderID Col
Src. Only 11052
Src. Only 11053
Src. Only 11054
Src. Only 11055
Src. Only 11056
Src. Only 11057
Src. Only 11058
Src. Only 11059
Src. Only 11060
Src. Only 11061
Src. Only 11062
Src. Only 11063
Src. Only 11064
Src. Only 11065
Src. Only 11066
Src. Only 11067
Src. Only 11068
Src. Only 11069
Src. Only 11070
Src. Only 11071
Src. Only 11072
Src. Only 11073
Src. Only 11074
Src. Only 11075
Src. Only 11076
Src. Only 11077
The requested operation took 0,296875 seconds.

Und in der "Fix-Datei" steht dann (gekürzt):

-- Host: MyBigPC\MyLittleSQL
– Database: [Northwind]
– Table: [dbo].[Orders]
SET IDENTITY_INSERT [dbo].[Orders] ON
INSERT INTO [dbo].[Orders] ([CustomerID],[EmployeeID],[Freight],[OrderDate],[OrderID],[RequiredDate],[ShipAddress],[ShipCity],[ShipCountry],[ShipName],[ShippedDate],[ShipPostalCode],[ShipRegion],[ShipVia]) VALUES ('HANAR',3,67,2600,'1998-04-27 00:00:00.000',11052,'1998-05-25 00:00:00.000','Rua do Paço, 67','Rio de Janeiro','Brazil','Hanari Carnes','1998-05-01 00:00:00.000','05454-876','RJ',1)
INSERT INTO [dbo].[Orders] ([CustomerID],[EmployeeID],[Freight],[OrderDate],[OrderID],[RequiredDate],[ShipAddress],[ShipCity],[ShipCountry],[ShipName],[ShippedDate],[ShipPostalCode],[ShipRegion],[ShipVia]) VALUES ('PICCO',2,53,0500,'1998-04-27 00:00:00.000',11053,'1998-05-25 00:00:00.000','Geislweg 14','Salzburg','Austria','Piccolo und mehr','1998-04-29 00:00:00.000','5020',NULL,2)

INSERT INTO [dbo].[Orders] ([CustomerID],[EmployeeID],[Freight],[OrderDate],[OrderID],[RequiredDate],[ShipAddress],[ShipCity],[ShipCountry],[ShipName],[ShippedDate],[ShipPostalCode],[ShipRegion],[ShipVia]) VALUES ('RATTC',1,8,5300,'1998-05-06 00:00:00.000',11077,'1998-06-03 00:00:00.000','2817 Milton Dr.','Albuquerque','USA','Rattlesnake Canyon Grocery',NULL,'87110','NM',2)
SET IDENTITY_INSERT [dbo].[Orders] OFF

Wenn man auch Unterschiede in den Datensätzen ("auf Spaltenebene") sehen will, dann ist die Option "-c" interessant.

Nützlich, oder?

24. Dezember 2006 um 13:58

Frohe Weihnachten

Ich wünsche Euch allen frohe Weihnachten.

Für alle, die heute noch eine echt starke Predigt hören wollen, empfehle ich die Predigt "Gospel Reloaded", die Peter Aschoff in der Kino-Kirche CityChurch hielt. Dort gibt es ein PowerPoint mit gelesenen Passagen.

               |
             '.'.'
            -= o =-
             .'.'.
               |
               ,
              / \\
            .'. o'.
           / 6 s ^.\\
          /.-.o *.-.\\
          `/. '.'9  \\`
         .'6. *  s o '.
        /.--.s .6 .--.\\
        `/ s '. .' * .\\`
       .' o 6 .` .^ 6 s'.
      /.---. * ^ o .----.\\
      `/s * `.^ s.' ^ * \\`
     .' o , 6 `.' ^ o  6 '.
    /,-^--,  o ^ * s ,----,\\
    `'-._s.;-,_6_^,-;._o.-'
         jgs |   |
             `"""`
ASCII-Art von Joan Stark
23. Dezember 2006 um 17:39

"OLAP Survey 6" verfügbar

Alle, die mitgemacht haben wurde gestern benachrichtigt, dass die Ergebnisse des OLAP Survey 6 verfügbar sind. Man kann sich dort gegen Angabe der persönlichen Daten eine "Preview" schicken lassen. Die volle Version kostet fast 3,5KiloDollar. Bei BARC kostet die deutsche Fassung der deutschen Ergebnisse "nur" 1,7 KiloEuro.
😐

In der mir zugesandten Summary gibt es viele interessante Dinge. Beispielsweise, dass der Anteil der Windows-Plattfomen unverändert hoch ist (etwa 84%), die Unix/Linux-Systeme (etwa 14%) und andere weiterhin abgeschlagen rumdümpeln.
Die Datenquellen für OLAP-Systeme sind in der Regel weiterhin Oracle oder Microsoft-Systeme. Allerdings hat Microsoft erstmals die Nase vorn: mit 48,1% zu 46,8%.

23. Dezember 2006 um 14:11

Große Datei kann nicht gelöscht werden

Bei den Heise-FAQs, die mir Spencer schickte, war auch eine für Windows-XP (interrim) dabei. Da fand ich doch sogleich ein Problem, mit dem ich letzter Zeit schon häufig zu tun hatte: Ich kann über den Explorer regelmäßig sehr große AVIs nicht löschen oder verschieben. Dabei kommt gerne die Meldung, das die Datei noch im Zugriff sei. Aber mit dem Process-Explorer wurde kein offener File-Handle angezeigt. Über die DOS-Box hingegen konnte ich die Datei prima löschen oder verschieben. Was habe ich mich schon darüber gewundert.

Anhand der FAQ fand ich schnell heraus, dass es sich hierbei um einen Bug in Windows-XP (c't 1/2004, S. 166: Hotline) handelt. Und ich hatte schon den Virenscanner im Verdacht…

Und dabei hatte ich noch Glück, denn der Explorer kann sich in WindowsXP (ohne SP2) dabei offenbar auch aufhängen.

23. Dezember 2006 um 13:54

weitere FAQ, diesmal zu DVDs/CDs

Neben der Heise-FAQ zu Festplatten finde ich die FAQ zu DVDs und CDs auch sehr gut. Danke, Spencer!

Diese Linksammlung enthält alle technischen Aspekte zu DVDs und CDs in Heise-Qualität, bspw.

  • Firmware und Rohlinge,
  • Windows Autorun und
  • nützliche Werkzeuge.

Wenn es eher darum geht eine DVD selber zusammenzustellen, dann würde ich den DVD-Guide empfehlen. Den gibt es auch als Download. Hier werden sehr schön die einzelnen Schritte erklärt und Werkzeuge vorgestellt.

23. Dezember 2006 um 13:40

Link: Ausführliche FAQ zu Festplatten bei Heise

Spencer machte mich auf die sehr ausführliche und vollständige FAQ zum allen Fragen rund um Festplatten bei Heise aufmerksam. Danke!

Beispiel für Themengebiete:

  • Festplatte defekt bzw. zu laut
  • Rettung gelöschter Dateien
  • Übersicht über Partitionierung und diesbezügliche Datensicherung
  • Grundlagen RAID und Kopieren von Festplatten

Eine aktualisierte Fassung (vom 15.12.2006) steht vorübergehend bei MooLoad.com bereit (bis sie von einem Heise-Mitarbeiter auf die offiziellen Seiten eingepflegt wird).

23. Dezember 2006 um 13:00

Der Kontext von Performance

Nur für die Akten: Je nachdem wer von "Performance" redet können damit zwei völlig unterschiedliche Dinge gemeint sein.

Ich – als Techniker – verstehe darunter die Leistungsfähigkeit oder besser Geschwindigkeit einer Software. Deswegen war ich ziemlich enttäuscht als ich feststellte, dass sich die in dem Microsoft-Artikel "Integrated Performance Management with PerformancePoint Server 2007" beschriebene Software an Betriebswirte richtet, die Performance-Analysen durchführne wollen. Die verstehen unter Performance die finanzielle Ergiebigkeit einer Investition (wie etwa die "Performance einer Anlage"). Schade…

22. Dezember 2006 um 18:41

USB-Sticks nicht einfach abziehen

Immer wieder diskutiere ich mit Leuten darüber, dass man USB-Sticks nicht einfach abziehen darf. Das ist aber leider gängige Praxis. Wenn man das macht, dann riskiert man Schäden im Datei-System des Sticks. Da sie in der Regel als FAT verwenden, entstehen so gerne mal Schäden. Beispielsweise dann, wenn man zwar Dateien dort geändert hat, aber das Dateiverwaltungssystem die Änderungen noch nicht geschrieben hat, um die Performance zu erhöhen. Ich selber habe das auch erst auf die harte Tour gelernt und musste als Konsequenz dann auf dem "defekten" Stick mal ein CheckDisk ausführen. Zu Glück habe ich dort nur redundante Daten.

Um den Stick abziehen zu dürfen, muss man ihn vom System abmelden. Das geht unter Windows am einfachsten mit einem Klick auf das Symbol Symbol.
Dann kann man unter den vielen Plug'nPlay-Geräten dasjenige auswählen, dass man entfernen will. Hier im Beispiel eine externe Festplatte:
Entfernen

Dann dauert es eine Weile und man bekommt Bescheid, dass man das Gerät entfernen darf.
geraetentfernen_04.jpg

Abziehen geht nicht?

Manchmal aber darf man das nicht und dann wird es lästig: Wenn noch ein Prozess auf dem Datenträger eine Datei oder ein Verzeichnis geöffnet hat. Manchmal hat man nur noch ein Explorerfenster auf dem Stick geöffnet, aber es kann auch eine Anwendung noch Daten darauf lesen oder schreiben. Wenn man jetzt den Stick einfach abzieht, dann ist der Schaden da.
Besonders lästig wird es, wenn man eine SQL-Server-Datenbank auf dem Stick hat. Datenverluste wären vorprogrammiert.

Spurensuche für Fortgeschrittene

Dann hat man zwei Möglichkeiten: entweder man beendet schrittweise alle Prozesse (das kann bis zum Runterfahren gehen) oder man findet raus, wer der Bösewicht ist. Ich benutze für die Spurensuche gerne den Process-Explorer von SysInternals.

Mit einem Klick im Menü unter "Find -> Find Handle" (oder Strg+f) kann man nach offenen Dateien suchen, z.B. auf "i:\". Im Ergebnis bekommt man eine Liste mit Prozessen und den geöffneten Dateien. Ist es nur der Explorer, kann man mit dem Werkzeug gleich den "Handle" schließen (Doppelklick spring zum Prozessfenster, dort kann man mit der rechten Maustaste auf dem Handle "Close Handle" wählen). Ist es ein anderer Prozess, dann sollte man den lieber erst ordnungsgemäß beenden (nicht einfach den Prozess killen). Infos zu dem Prozess mit den wenig sprechenden Namen bekommt man indem man ihn oben im Fenster auswählt und mit der rechten Maustaste "Properties" auswählt. Diese Infos sollten reichen, um den Bösewicht zu identifizieren…

Update:
Bei Heise wird auf das Tool DevEject.exe verwiesen. Damit kann man in einem Batch einen USB-Stick nach erfolgter Arbeit abmelden.

22. Dezember 2006 um 00:23

Datensicherung fahrlässig (blauäugig) vernachlässigt

Falls sich mal einer Eurer Kunden ziert Geld für die Datensicherung auszugeben, dann könnt Ihr ihm unter die Nase reiben, dass Gewerbetreibende verpflichtet sind für eine funktionierende Datensicherung zu sorgen, sonst handeln sie fahrlässig. Die genauen Formulierungen aus einem Urteil zu einem Datenverlust bei Computer-Reparatur des OLG Hamm (Urteil vom 01. Dezember 2003, 13 U 133/03) sind ausnahmsweise auch für mich Nichtjuristen verständlich und IMHO gut zu verallgemeinern:

Wie dargelegt, gehört es im gewerblichen Anwenderbereich heute zu den vorauszusetzenden Selbstverständlichkeiten, dass eine zuverlässige, zeitnahe und umfassende Datenroutine die Sicherung gewährleistet. Vor einem objektiv datengefährdenden Eingriff muss sich der Werkunternehmer zwar danach erkundigen und gegebenenfalls darüber vergewissern, ob die vom Anwender vorgenommene Datensicherung dem aktuellen Stand entspricht. Zusätzliche Überprüfungspflichten bestehen jedoch nur dann, wenn ernsthafte Zweifel vorliegen, dass die Datensicherung nicht ordnungsgemäß erfolgt ist oder das Sicherungssystem nicht funktioniert (OLG Karlsruhe NJW 1996, 2000; OLG Köln NJW-RR 1997, 558; 1994, 1262; BGH NJW 1996, 2924; Senat in OLGR 2000, 195).

Die Hervorhebungen (oben und unten) sind von mir. In dem Fall hat ein beauftragter EDV-Fachmann eine Reparatur vorgenommen und sich vorher erkundigt, ob es eine aktuelle Datensicherung gibt (für den Fall, dass etwas schief geht). Das wurde bejaht, aber wie sich später herausstellte, gab es zwar keine Datensicherung, aber Datenverluste traten trotzdem auf. Deswegen wollte der Beklagte dem Installateur die Bezahlung kürzen. Das Gericht hat die Sache aber sehr eindeutig geklärt.
Hier noch eine Passage in der der Beklagte sein Fett weg bekommt:

Die Sicherung hätte täglich erfolgen müsse, die Vollsicherung mindestens einmal wöchentlich. Das ist unstreitig nicht geschehen. Aus den Bekundungen des Zeugen N hat der Sachverständige zu Recht entnommen, dass die Sicherung von Daten im Betrieb der Beklagten schon grob fahrlässig (blauäugig) vernachlässigt wurde. […] Unter diesen Voraussetzungen hat sich die Beklagte den Schaden allein zuzurechnen, selbst wenn der Klägerin eine Pflichtverletzung im Sinne der Wahrnehmung von Controllpflichten vorzuwerfen wäre (vgl. BGH NJW-RR 1991, 1240).

Den kompletten Text gibt es bei aufrecht.de

Ergänzend dazu finde ich auch den Artikel "Urteil: Datensicherung ein Muss" bei rechtsanwalt.com interessant.

Das sind zwar schon olle Kamellen, aber neulich schrieb ich: "Wer nicht sichert, hat schon fast verloren." Das wollte ich mal näher begründen…

21. Dezember 2006 um 23:55

Windows herunterfahren

Wer wie ich ständig eine Dos-Box ("MSDOS-Eingabeaufforderung") offen hat, der kann sich ganz gut behelfen, wenn sich das System mal wieder aufhängen sollte. Es kommt zwar immer seltener vor, aber meist ist dann der Explorer schuld, der auch das "Start"-Menü steuert, mit dem man sein Windows runterfahren kann. Der "Rest" funktioniert dann noch…

In solchen Situationen verwende ich gerne den Befehl "shutdown", um das System neu zu starten, falls es nicht gelang den Explorer zu killen. Der "Shutdown"-Befehl ist überhaupt recht nützlich. Beispielsweise kann man damit einen Batch absetzen, der eine Aufgabe erfüllt und danach den Recher herunterfährt. Im folgenden Beispiel wird der McAfee die lokalen Platten C, D und E scannen und danach den Rechner herunterfahren. Den Batch kann man aufrufen, wenn man sowieso vor hat den Rechner herunterzufahren:

start "Antivir" /wait "C:\Programme\Network Associates\VirusScan\scan32.exe" c:\ d:\ e:\
shutdown -s

Den Inhalt in eine Text-Datei kopieren, diese bspw. ScanUndDown.bat nennen und auf dem Desktop ablegen. Dann kann man mit einem Doppelklick den Batch starten.

Mit dem Befehl "shutdown -s" wird der Rechner heruntergefahren, mit "shutdown -r" wird ein Neustart angestoßen und mit "shutdown -a" das Herunterfahren abgebrochen. Letzteres benötigte ich mal als der Rechner eines Freundes von einem Schädling befallen war. Der hatte den RPC-Dienst (oder irgendeinen anderen) gestoppt, worauf sich das System ständig selbst beenden wollte. Ein beherzter Aufruf von "shutdown -a" brach den Shutdown ab und ich konnte den Übeltäter unter die Lupe nehmen.

Falls man ein Netz hat, kann man – die entsprechenden Berechtigungen vorausgesetzt – auch andere Rechner herunterfahren. Das ist beispielsweise nützlich, wenn der Rechner zwar noch "lebt", aber nicht mehr auf Tastatur oder Maus reagiert. Ein Versuch ist es dann allemal wert, um ihn doch noch ordentlich zu beenden:

shutdown -s -m \\AndererRechnerName

Wenn man will, dass die Kiste nicht erst in 30 Sekunden beendet wird, sondern früher, dann kann man die Dauer in Sekunden durch den Parameter "-t" angeben, z.B. "-t 00".

Das Shutdown-Programm ist auf allen NT-Derivaten vorhanden: Windows 2000, XP, Vista…

20. Dezember 2006 um 21:31

Die Presse steigt ein: SQL-Server und Vista

Erstaunlicherweise hat die Presse das Thema SQL-Server und Vista bisher nicht aufgegriffen. Das jetzt ausgerechnet "money.cnn.com" die Fährte aufnimmt, weil sie ernsthafte Einbrüche der Marktanteile für den SQL-Server erwarten!? Der Grund liegt daran, dass MS immer noch keine Version anbieten kann, die unter Vista läuft. Derartige Infos seitens der Presse habe ich (so kurz vor erscheinen des rettenden SP2 für SQL2005) nicht mehr erwartet.

Süffisant beschreiben sie, wie MS sich von IBM vorführen ließ:

Microsoft has effectively just handed its chief rivals an early holiday present. […]

This, of course, is exactly the opposite of what Microsoft should be doing if it hopes to outsell Oracle and IBM in the database business. Microsoft should have released a Vista-compatible version of SQL Server as early as a year ago. That way, corporate customers would have had plenty of time to test it in time for Vista's release.

Instead, IBM has beaten Microsoft to the punch. Last week IBM released a desktop version of its competing database management software, called DB2 9 Express-C, that's compatible with Vista.

Die lange Fassung steht unter "Microsoft's Vista isn't compatible with SQL Server".

Ich persönlich finde ja den dickeren Hammer, dass die MSDE, die ja noch mehrere Jahre von MS unterstützt wird, nicht unter Vista lauffähig ist. Die Unterstützung gilt halt nur für alte Betriebssysteme.

20. Dezember 2006 um 21:01

Unrealistische Erwartungen

Unrealistische Erwartungen an die Selbstheilkräfte der Hardware

Gestern erlebten wir leider wieder einen von den Fällen in denen eine völlig defekte Datenbank eines Kunden an uns geschickt wurde, damit wir sie analysieren und retten was zu retten ist. Genau der Kunde hatte aber schon mal Datenbanken an uns geschickt. Mit nur geringen Datenverlusten konnten damals wieder konsistente Datenbestände restauriert werden. Seinerzeit wurde ihm mitgeteilt, dass seine Hardware ein Problem hat und sein EDV-Händler/-Betreuer das untersuchen und lösen soll, vermutlich ein Problem mit Festplatte und/oder Raid-Controller. Das passierte aber nicht…
Nun hat es eine Datenbank von ihm besonders schlimm erwischt. Reparaturversuch erfolglos. Datensicherung: Fehlanzeige.
Was soll man dazu sagen?

Unrealistische Erwartungen an die Haftung der Softwarelieferanten

Das ist leider kein Einzelfall. Besonders frustrierend sind die Fälle in denen man sich unheimlich reinhängt und stundenlang analysiert (weil der Kunde keine Datensicherung hat), aber unter dem Strich doch nichts oder nur wenig zu machen ist. Die meisten Kunden sind dankbar für die Unterstützung. Aber einige versuchen doch tatsächlich bei solchen Totalausfällen unsere Firma für deren Ausfallzeiten haftbar zu machen. Manche wollten sogar die neue Hardware über uns finanzieren…
Meist sind das diejenigen, die auch schon während der Analyse Druck machen, mehrfach anrufen oder von den Kollegen umfassende schriftliche Statusberichte fordern und somit von der Unterstützung abhalten, die sie eindringlich einfordern. Da spielt die Psychologie auch immer eine große Rolle: Schuldgefühle und Verzweiflung ergeben eine explosive Mischung. Dann muss es ganz hektisch gehen, aber dennoch akkurat und fehlerlos.
Wenn sie nur ein Bruchteil des Engagements gezeigt hätten, als es um die Einrichtung der Datensicherung ging, dann wäre ihnen viel Kummer und Leid erspart geblieben. Wer nicht sichert, hat schon fast verloren…
🙁

Das bringt mich darauf, dass ich die Serie mit Hinweisen zur Datensicherung noch nicht abgeschlossen habe. Das ist jetzt in meinem Stack wieder ganz oben.
😉