2

昨日、TableAdaptersを使用しているときに奇妙な動作に気づきました。何らかの理由で、小数<0.1を渡すと、整数になります。たとえば、1.0123に合格すると、SQLプロファイラーに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プロファイラーの表示バグのようBinaryDataです。

私はあなたの手順に従い、SQLプロファイラーのデフォルトのトレースを使用してSQL2008R2にリポジトリを作成することができました。

ただし、トレースプロパティを変更してのTextData列を含めるRPC:Completedと、正しいコマンドが表示されます。

ここに画像の説明を入力してください

于 2012-08-07T12:24:47.380 に答える