0

我想知道是否有人可以提供帮助?

我有一个 SqlCommand 对象的问题,当它执行一个不返回任何记录的存储过程时,它会超时。

存储过程并不复杂,它只是一种简单SELECT ColumnA, ColumnB, ... FROM TableA WHERE Id = @Id的东西。如果我在 Sql Managment Studio 中运行 SP,它会立即返回。

但是,当我尝试执行填充 DataAdapter 的命令或从“即时窗口”手动执行命令时——一旦创建并填充了参数,它总是会超时。

我使用 SqlCommandBuilder 的 DeriveParameters() 方法填充 SqCommand 参数,然后遍历集合并填充值。然后我将 DataAdapter.SelectCommand 设置为 SqlCommand 的引用并调用 DataAdapter 的填充方法。

该代码似乎适用于任何返回数据的 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 回答