How to fix Error 337 on Windows Server 2025 / Windows 11

Why This Error Happens

This warning (Error 337) occurs when SQL Server 2025 parses a floating-point literal in a T-SQL script or a data import file whose magnitude falls below the smallest representable value for the target float or real data type, causing an underflow. Instead of throwing a hard error, the SQL Server parser silently rounds the value to 0, which can corrupt calculations or data integrity if left unnoticed. This is commonly seen during bulk data imports, linked server queries, or when application code generates scientific-notation numbers with extremely small exponents (e.g., 1.2E-46).

Step-by-Step Resolution Guide

Step 1: Identify the Source of the Offending Value

  • Check the SQL Server Error Log (C:\Program Files\Microsoft SQL Server\MSSQL17.MSSQLSERVER\MSSQL\Log\ERRORLOG) for the exact statement or batch ID tied to Error 337.
  • Run SELECT * FROM sys.dm_exec_query_stats cross-referenced with sys.dm_exec_sql_text to trace back the query that generated the warning.
  • If it originates from a flat file import, inspect the source .csv or .txt file for values with extreme negative exponents (e.g., 1E-400).

Step 2: Correct the Data Type or Precision

  • Change the destination column data type from real to float(53) if you need to accommodate a wider range of small values, since real only supports down to approximately 1.18E-38.
  • Use ALTER TABLE dbo.YourTable ALTER COLUMN YourColumn float(53); in SSMS 21 (or newer Azure Data Studio equivalent) to widen precision.
  • Recompile any stored procedures referencing the altered column with EXEC sp_recompile 'dbo.YourProcedure';.

Step 3: Sanitize Input Data Before Import

  • If using SSIS or BCP, add a data conversion/validation step to clamp or reject values below the minimum float threshold before they hit SQL Server.
  • For BCP, use a format file (.fmt) with adjusted field lengths and data types matching float(53) instead of real.
  • Validate application-layer numeric formatting (e.g., .NET double.ToString("G17")) to avoid emitting sub-normal floating-point literals.

Step 4: Apply the Latest SQL Server 2025 Cumulative Update

  • Navigate to Windows Update or the Microsoft Update Catalog and confirm SQL Server 2025 is patched to the latest Cumulative Update (CU), as parser edge-case handling for extreme floats has been refined in recent builds.
  • Restart the SQL Server service via services.msc or Restart-Service MSSQLSERVER in PowerShell (run as Administrator) after patching.

Alternative or Verification Steps

  • Re-run the original query or import job and confirm Error 337 no longer appears in the SQL Server Error Log or SSMS message pane.
  • As an alternative, wrap suspect calculations in TRY_CONVERT(float(53), YourValue) to gracefully handle underflow cases and return NULL instead of silently coercing to 0, preserving data auditability.