0

誰かが助けることができるのだろうか?

レコードを返さないストアド プロシージャを実行すると、タイムアウトになる SqlCommand オブジェクトに問題があります。

ストアド プロシージャは複雑ではなく、単純なSELECT ColumnA, ColumnB, ... FROM TableA WHERE Id = @Idタイプのものです。Sql Managment Studio で SP を実行すると、すぐに戻ります。

ただし、コマンドを実行して DataAdapter を埋めるか、「イミディエイト ウィンドウ」からコマンドを手動で実行しようとすると、コマンドが作成されてパラメータが入力されると、常にタイムアウトになります。

SqlCommandBuilder の DeriveParameters() メソッドを使用して SqCommand パラメーターを設定し、コレクションを反復処理して値を設定します。次に、DataAdapter.SelectCommand を SqlCommand の参照に設定し、DataAdapter の fill メソッドを呼び出します。

このコードは、データを返す任意の SP で正常に動作するように見えますが、行が返されないとボークします。

誰かがこれを経験したことがあり、正しい方向に私を向けることができますか?

前もって感謝します、よろしく、デュアン。

4

3 に答える 3

1

結局、コードの別の部分で、私たちが読んでいたレコードでトランザクションが開かれていることがわかりました。

データベースへの複数の接続の理由は、プロジェクトが現在ADOとADO.Netを使用しているためです(これは非常に大規模なプロジェクトであり、現在VB6から.Netに変換されています。 ADO)。ADO接続ではトランザクションが開いたままになり、トランザクションが終了するまで新しいADO.Net接続を読み取ることができませんでした。これは、ADO.Netコマンドがタイムアウトし、エラーがスローされてADOトランザクションがロールバックされた後にのみ発生します。

ドー!

解決策を読んで考えてくれたすべての人に感謝します。彼女の提案をしてくれたベスに感謝します。

よろしく、デュアン。

于 2010-08-21T07:56:17.143 に答える
0
com = new SqlCommand("insert1",con);

com.CommandType = System.Data.CommandType.StoredProcedure;

com.Parameters.Add("@eno",eno.Text);
com.Parameters.Add("@ename",ename.Text);
com.Parameters.Add("@sal",sal.Text);
Response.Write(com.ExecuteNonQuery().ToString());
于 2012-11-08T08:28:54.027 に答える
0

コマンド タイムアウト プロパティを探し、その値をゼロに設定します。

    Dim cmd As SqlCommand

    cmd = New SqlCommand
    cmd.CommandText = spName
    cmd.CommandType = CommandType.StoredProcedure
    cmd.Connection = _sqlConn
    cmd.CommandTimeout = 0
于 2010-08-19T16:34:45.847 に答える