The Daily WTF 日本語
フォロー
フローティング・アロング
著者は、あるMicrosoftプラットフォームから別のプラットフォームへのデータ移行について説明しており、予期せぬ問題が発生しました。当初、データ抽出とロードはSSISによって処理されていましたが、著者はより多くの制御を得るためにPowerShellに切り替えました。目標は、SharePoint on-premisesからSQL Serverデータベースへ顧客ドキュメントとメタデータを移行することでした。重要なフィールドである顧客番号は、SharePointではNumber型として格納されていました。内部的には、SharePointのNumberフィールドはDoubleとして表現されており、10桁の数値を正確に格納するには十分です。しかし、SSISによって生成されたSQL Serverスキーマでは、このフィールドに'float'データ型が使用されていました。著者は、PowerShellスクリプト内の'.Net'型'float'がSQL Serverの'float'型と完全に一致すると誤って仮定しました。この不一致は、SQL Serverの'float'がデフォルトで倍精度であるにもかかわらず、著者がこの表現の違いに気づかなかったために発生しました。その結果、数値が転送および変換される際に、大きな顧客番号が精度損失により最後の数桁を失いました。テスターは当初このエラーを見逃していましたが、完全なデータロード中に発見されました。チームは、破損した数値を特定し、移行後に手動で修正する必要がありました。