Skip to content

[7.1] ArgumentException after updating Microsoft.Data.SqlClient to 7.1.0 #4738

Description

@mdaigle

Describe the bug

My unit tests fail after updating to the latest version. This is the stack trace:

System.ArgumentException
Parameter value '0.000' is out of range.
   at Microsoft.Data.SqlClient.TdsParser.TDSExecuteRPCAddParameter(TdsParserStateObject stateObj, SqlParameter param, MetaType mt, Byte options, SqlCommand command, Boolean isAnonymous)
   at Microsoft.Data.SqlClient.TdsParser.TdsExecuteRPC(SqlCommand cmd, IList`1 rpcArray, Int32 timeout, Boolean inSchema, SqlNotificationRequest notificationRequest, TdsParserStateObject stateObj, Boolean isCommandProc, Boolean sync, TaskCompletionSource`1 completion, Int32 startRpc, Int32 startParam)
   at Microsoft.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean isAsync, Int32 timeout, Task& task, Boolean asyncWrite, Boolean isRetry, SqlDataReader ds, Boolean describeParameterEncryptionRequest)
   at Microsoft.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, TaskCompletionSource`1 completion, Int32 timeout, Task& executeTask, Boolean& usedCache, Boolean asyncWrite, Boolean isRetry, String method)
   at Microsoft.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method)
   at Microsoft.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior)
   at Microsoft.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior behavior)
   at Microsoft.EntityFrameworkCore.Storage.RelationalCommand.ExecuteReader(RelationalCommandParameterObject parameterObject)
   at Microsoft.EntityFrameworkCore.Update.ReaderModificationCommandBatch.Execute(IRelationalConnection connection)

I'm writing 0 to a column that is decimal(3,3). TdsParser.AdjustDecimalScale changes the precision from 3 to 4 and then I get the exception. If I change the value of the property of the entity from C# default of 0M to 0.001M it works. I assume this is related to #4443.

To reproduce

I have created a repo that demonstrates the issue: https://github.com/andygjp/TdsParserArgumentException.

Expected behavior

Should be able to use default values for decimal types.

Further technical details

Microsoft.EntityFrameworkCore.SqlServer: 11.0.0-rc.1.26425.128
Microsoft.Data.SqlClient: 7.1.0
.NET: 11.0.100-rc.1.26425.128
SQL Server 2025 (https://mcr.microsoft.com/en-us/artifact/mar/mssql/server/tag/2025-latest)
MacOS 27

Activity

  1. added this to the 7.1.1 milestone on Sep 23, 2026
  2. self-assigned this
    on Sep 23, 2026
  3. added
    Regression 💥Issues that are regressions introduced from earlier PRs.
    on Sep 23, 2026
  4. added theissue type on Sep 23, 2026
  5. moved this from To triage to In progress in SqlClient Boardon Sep 23, 2026
  6. github-actions commented on Sep 23, 2026

    @github-actions

    🔍 Triage Summary

    Check Result
    Issue type Bug
    Environment All required environment details provided for investigation
    Area No exact match in the standard area list; closest is core TdsParser decimal/rescale handling (not SqlBulkCopy, Json, Vector, or any SNI area)
    Duplicates Duplicate of/child tracking issue for #4715 (parent, still open)
    Regression Confirmed regression in 7.1.0 from prior working versions (writing default 0M to a decimal(3,3) column now throws ArgumentException in TDSExecuteRPCAddParameter), related to the decimal-scale-adjustment change discussed in #4443

    Analysis

    The reporter is writing a default 0M value to a decimal(3,3) column via EF Core; TdsParser.AdjustDecimalScale bumps the precision from 3→4 when rescaling zero, which then fails the RPC parameter's out-of-range check in TDSExecuteRPCAddParameter. This is a P1 regression affecting anyone using default/zero decimal values with tight precision/scale columns. A minimal, reproducible repo is linked, and a stack trace is provided. Notably, PR #4732 ("[7.1.1 Cherry-pick] Fix precision of rescaled zero decimal parameters") is already merged and listed as closing this issue, targeting the 7.1.1 milestone.

    Next Steps

    Note: This triage summary is auto-generated by an AI agent. The analysis and suggestions above have not been verified by a human maintainer. Please treat as preliminary guidance only.

    Generated by SqlClient Issue Auto-Triage for #4738 · copilot · auto · 26.4 AIC · ⌖ 12.4 AIC · ⊞ 13K · ◷

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

Regression 💥Issues that are regressions introduced from earlier PRs.

Type

Projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions