2

昨天我在使用 TableAdapters 时注意到一个奇怪的行为,由于某种原因,当传递一个小于 0.1 的小数时,它会变成一个整数。例如,如果我通过 1.0123,我可以在 SQL Profiler 中看到 1.0123,但如果我通过 0.0123,我将得到 123。是否存在已知问题?您可以执行以下步骤来重现该问题:

  1. 新建一个数据库TestDatabase,并创建如下存储过程

    create proc DecimalParametersSelect
    (
        @Foo decimal(10,5)
    )
    
    as
    
    select @Foo
    
  2. 创建一个新项目并添加一个新的 DataSet 文件 SampleDataset。添加一个新的 TableAdapter 并将 DecimalParametersSelect 添加为 Select 过程(它应该是您数据库中唯一的一个)。

  3. 运行您的项目并尝试选择一些数据,例如

    using (SampleDatasetTableAdapters.DecimalParametersSelectTableAdapter dta = new SampleDatasetTableAdapters.DecimalParametersSelectTableAdapter())
    {
        var table = dta.GetData(0.01588M);
    }
    

在分析器中,您应该看到传入的值是 1588(有趣的是,返回的值在 C# 中被正确识别为 0.01588)

4

1 回答 1

2

TextData当该列未包含在跟踪中并且 RPC 命令的文本是从另一个源(大概是 )重建时,这似乎是 SQL Profiler 中的一个显示错误BinaryData

我按照您的步骤操作,并且能够使用 SQL 探查器中的默认跟踪在 SQL 2008 R2 上进行回购。

但是,当跟踪属性更改为包含 的TextData列时RPC:Completed,会显示正确的命令。

在此处输入图像描述

于 2012-08-07T12:24:47.380 回答