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

Troubleshooting Guide: SQL Server Error 8017 (Invalid Precision or Scale in TDS RPC Stream)

Why This Error Happens

This error occurs when a client application sends a Remote Procedure Call (RPC) to SQL Server 2025 with a parameter whose data type requires precision and scale values (such as DECIMAL, NUMERIC, or DATETIME2), but those values are either missing, malformed, or exceed the allowed range (precision 1–38). This is typically caused by a mismatch between the client driver version (ODBC, OLE DB, or ADO.NET) and the SQL Server TDS protocol version, or by a bug in custom application code that manually constructs TDS parameter metadata. Corrupted or outdated client-side driver files on Windows 11 or Windows Server 2025 can also send malformed packets that the Database Engine rejects before execution.

Step-by-Step Resolution Guide

Step 1: Update and Verify the Client Driver

  • Confirm the application is using a TDS-compliant driver that supports SQL Server 2025 (ODBC Driver 18+ or Microsoft.Data.SqlClient 5.x+).
  • On Windows 11/Server 2025, check installed driver version via Control Panel > ODBC Data Sources (64-bit) > Drivers tab.
  • Reinstall or update using: winget install Microsoft.ODBCDriverforSQLServer

Step 2: Inspect the Parameter Definitions in Application Code

  • Review any stored procedure calls that pass DECIMAL(p,s) or NUMERIC(p,s) parameters and confirm precision does not exceed 38 and scale does not exceed precision.
  • Check for hardcoded or dynamically generated TDS parameter metadata in custom data-access layers (common in legacy .NET or Java JDBC apps).
  • Example fix in C#: explicitly set SqlParameter.Precision and SqlParameter.Scale before execution rather than relying on type inference.

Step 3: Capture and Analyze the TDS Stream

  • Use SQL Server Profiler or Extended Events (sp_server_diagnostics) to capture the exact RPC call triggering Error 8017.
  • Filter on Event ID 8017 and inspect the %d parameter index and %.*ls parameter name reported in the error text to isolate the offending column.
  • Cross-reference the parameter against the target table/stored procedure schema using:
  SELECT name, system_type_name, precision, scale 
  FROM sys.dm_exec_describe_first_result_set_for_object(OBJECT_ID('YourProcName'), 0);

Step 4: Repair or Reset the SQL Server Client Configuration

  • On the Windows machine running the client app, clear any cached connection strings or UDL files that may reference an outdated provider.
  • Run sfc /scannow on Windows Server 2025/Windows 11 to rule out corrupted system DLLs affecting the OLE DB/ODBC stack.
  • Restart the SQL Server (MSSQLSERVER) service after driver updates via services.msc or Restart-Service MSSQLSERVER.

Alternative or Verification Steps

  • Re-run the failing query/application action and confirm Error 8017 no longer appears in the SQL Server Error Log (Management > SQL Server Logs in SSMS).
  • If the issue persists, isolate the problem by testing the same RPC call directly in SSMS using EXEC with explicitly cast parameters to confirm whether the fault lies in SQL Server or the client application layer.