0

私は最も奇妙な問題を抱えています。以下はほとんどの場合機能しますが、adapter.fill ステートメントにブレークポイントを設定し、params をチェックし、確実にデータを返す SQL Management Studio を介してそれらを実行したにもかかわらず、「時々」データを返すことができません。 )

したがって、これは標準の c# SQL クライアント呼び出しです。

SqlCommand command = new SqlCommand();
command.CommandType = CommandType.StoredProcedure;
command.Connection = connection;

接続は間違いなく正常に開かれており、別の呼び出しでも使用されているため使用されています..実際には後続の呼び出しも機能します..ただし、私の場合、次の「時々」失敗します:

command.CommandText = "myprocname";
command.Parameters.AddWithValue("@param1", param1value);
command.Parameters.AddWithValue("@param2", param2value);
command.Parameters.AddWithValue("@param3", param3value);
command.Parameters.AddWithValue("@param4", param4value);

そして、データセットを埋めるために:

DataSet ds = new DataSet();
using (SqlDataAdapter adapter = new SqlDataAdapter(command))
{
    adapter.Fill(ds);
}
command.Dispose();

本当に奇妙なことは何も起こっておらず、上記はほとんどの場合うまくいきます..私が期待したものを返さなかった場合、adapter.fillステートメントの直前にブレークポイントを置き、コマンドテキストと各パラメータをチェックしました/values being passed.. SQL Management Studio を開き、これらのパラメーターを使用して proc を実行したところ、期待されるデータが十分に返されました。

プロシージャは非常に単純で、ほとんどの場合データが返されます...

とにかくprocを失敗させることはできませんが、接続タイムアウト、実行のタイミングなどをチェックしたので、これは私の狂気を駆り立てています..最もクレイジーなことは、proc名とパラメーターがすべて正しいことだと思います(余分なパラメーターはありません誤って渡されたなど)..そして手動で実行すると、データが返されます..しかし、fillステートメントを介してはそうではないようです(ただし、たまにしかありません!)。

この狂気の助けをいただければ幸いです!!

4

1 に答える 1

0

解決済み: わかりました..最も奇妙なエラーで、本当に私を悩ませました。

この質問を投稿した時点では、RDLC/Reportviewer コントロールを使用して一連のダッシュボード グラフ内のデータを表示していたことについては触れていませんでした。つまり、グラフ セグメント (たとえば、円グラフのスライス) を選択して、そのデータのドリルダウン..チャートデータは「事前にグループ化」されていました。つまり、これらのチャートのprocには、ダッシュボードをすばやく表示するための詳細が含まれていませんでした..

とにかく、私はいくつかの「悪いデータ」を持っていたので、脱線します..まあ、日付がnullのデータであり、レポートビューチャートのグループ化が原因で、選択されたデータが「時々」間違っていた短いストーリーバージョンでした..のように渡されたパラメーターは問題ないように見えましたが、場合によってはそうではありませんでした..

したがって、最終結果は(とにかく計画していた)「日付がnullではない」などのチェックをprocsに追加することでしたが、コマンドオブジェクトなどを「using」ステートメントでラップしても害はありませんでした!すべての回答に感謝します!

于 2013-02-26T10:58:30.553 に答える