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

Troubleshooting Guide: Error 3607 – Division by Zero

Why This Error Happens

Error 3607 occurs when SQL Server encounters an arithmetic operation that attempts to divide a value by zero during query execution, typically within a calculated column, aggregate function, or stored procedure logic. This is most often caused by unvalidated user input, NULL-to-zero coercion in computed columns, or missing guard clauses in T-SQL code that fails to check denominator values before performing division. In some cases, it can also surface after a database migration or upgrade to SQL Server 2025 if legacy code relied on the deprecated ARITHIGNORE session behavior instead of proper SET ARITHABORT handling.

Step-by-Step Resolution Guide

Step 1: Identify the Offending Query or Object

  • Check the SQL Server Error Log or Extended Events session for the exact batch, procedure, or statement that raised Error 3607.
  • Run the following to capture live occurrences:
  SELECT * FROM sys.dm_exec_query_stats 
  WHERE last_execution_time > DATEADD(HOUR, -1, GETDATE());
  • Review application logs (Event Viewer > Applications and Services Logs > MSSQLSERVER) for correlating timestamps.

Step 2: Patch the T-SQL Code with NULLIF or CASE Logic

  • Replace unsafe division operations with a NULLIF wrapper to prevent zero denominators:
  SELECT SalesAmount / NULLIF(UnitsSold, 0) AS AvgUnitPrice
  FROM Sales.OrderDetails;
  • Alternatively, use a CASE statement for more complex business logic:
  SELECT CASE WHEN UnitsSold = 0 THEN NULL ELSE SalesAmount / UnitsSold END
  FROM Sales.OrderDetails;

Step 3: Adjust Session-Level ARITHABORT Settings

  • Ensure SET ARITHABORT ON is enabled for the session or database to maintain consistent error-handling behavior:
  ALTER DATABASE [YourDatabaseName] SET ARITHABORT ON;
  • Verify this setting aligns with your application’s connection string options (especially for ODBC/OLEDB drivers on Windows Server 2025).

Step 4: Rebuild or Validate Computed Columns

  • If the error originates from a persisted computed column, drop and recreate it with safe division logic.
  • Use SQL Server Management Studio (SSMS) 2025 to inspect the column definition:
  EXEC sp_helptext 'dbo.YourTableName';
  • Rebuild the column using the NULLIF pattern from Step 2.

Alternative or Verification Steps

  • Re-run the original query or stored procedure after applying the fix; confirm no Error 3607 appears in SSMS or the Windows Event Viewer.
  • If the issue persists in a third-party application, enable SET ARITHIGNORE ON as a temporary workaround (not recommended long-term) while the underlying query is refactored by the application vendor or internal development team.