Плывущий вместе Заметка
The Daily WTF на русском

Плывущий вместе

Автор описывает миграцию данных с одной платформы Microsoft на другую, которая столкнулась с неожиданной проблемой. Изначально извлечение и загрузка данных выполнялись с помощью SSIS, но автор переключился на PowerShell для большего контроля. Целью была миграция документов клиентов и метаданных из SharePoint on-premises в базу данных SQL Server. Ключевое поле, номер клиента, хранилось в SharePoint как тип Number. В SharePoint поля типа Number представлены как Double, что достаточно для точного хранения десятизначных чисел. Однако, сгенерированная SSIS схема SQL Server использовала тип данных 'float' для этого поля. Автор ошибочно предположил, что тип '.Net' 'float' в их скрипте PowerShell идеально совпадет с типом 'float' SQL Server. Это несоответствие произошло потому, что 'float' в SQL Server по умолчанию имеет двойную точность, но автор не осознал эту разницу в представлении. В результате, при передаче и преобразовании чисел, большие номера клиентов теряли последние несколько цифр из-за потери точности. Хотя тестировщики сначала не заметили ошибку, она была обнаружена во время полной загрузки данных. Команде пришлось идентифицировать поврежденные номера и вручную исправлять их после миграции.
CdXz5zHNQW_ElgNsoYbYY.jpeg