Ein Einsender bei The Daily WTF, John F., schildert eine Migration, die subtil schiefging. Seine Firma hatte einen Teil des Geschäfts verkauft und musste Kundendokumente samt Metadaten aus einem lokalen SharePoint übergeben. Der Plan: Die Metadaten in eine SQL-Server-Datenbank extrahieren.
Ein Kollege hatte mit Microsofts ETL-Werkzeug SSIS begonnen, das das Datenbankschema erzeugte. John stieg für mehr Kontrolle auf PowerShell um und nutzte aus Geschwindigkeitsgründen System.Data.SqlClient.SqlBulkCopy. Dafür musste er in seinem Skript exakte .NET-Datentypen angeben.
Ein Feld war die Kundennummer: bis zu zehn Stellen, oft mit zwei führenden Nullen. Irgendjemand hatte sie früher in einem SharePoint-Number-Feld abgelegt, das intern ein Double ist. Double-Genauigkeit reicht für zehnstellige Zahlen exakt aus, soweit kein Problem. Die Falle lag in der Namensgebung. In SQL Server heißt der Typ mit doppelter Genauigkeit float; einfache Genauigkeit verlangt float(24). John wusste das nicht und bildete die float-Spalte auf .NET float ab, also einfache Genauigkeit.
Die aus SharePoint kommenden Doubles wurden beim Einfügen still auf einfache Genauigkeit gestutzt. Die meisten Datensätze blieben intakt, aber bei großen Kundennummern änderten sich die letzten Ziffern. Die Tester bemerkten nichts. Erst der Volllauf brachte es ans Licht. Das Team musste eine Liste der veränderten Nummern erzeugen und die Daten nachträglich korrigieren. Die Pointe: Microsoft-Plattform zu Microsoft-Plattform mit Microsoft-Werkzeugen, und trotzdem fiel er auf die Typnamen herein.
Kommentare
Noch keine Kommentare — schreib den ersten.
Starte die Diskussion
Kein Konto, kein Passwort nötig — gib einfach deine E-Mail-Adresse ein, wir senden dir einen einmaligen Anmelde-Link. Beim ersten Mal bist du damit automatisch angemeldet.
Deine Bewertung wird nach der Anmeldung automatisch übernommen.
Schau in dein Postfach
Wir haben einen Anmelde-Link an … gesendet. Öffne ihn auf diesem Gerät — dieser Tab meldet dich automatisch an.
Nichts angekommen? Wirf einen Blick in den Spam-Ordner — und markiere die Mail dort als „Kein Spam“, dann landet sie künftig direkt im Postfach.