Microsoft OLE DB Provider for SQL Server 錯誤 '80040e21' 多重步驟 OLE DB 操作發生錯誤。請檢查每一個可用的 OLE DB 狀態值。尚未完成任何操作。 这是一个很复杂的查询时候出的错,网上有人说是数据字段长度不对,但我是查询的时候出错,而且以前应该是正常的,最近才出错,而且页面刷新又可以显示出查询结果。 
各位帮帮忙,谢谢各位了! 
在綫等,各位幫幫忙?

解决方案 »

  1.   

    http://topic.csdn.net/u/20090709/13/ecf230b8-b30c-4a0c-862a-d6f6ab6ecb77.html这贴已解决,看跟你的情况是否差不多
      

  2.   

    应该就是字段长度的问题 把字段长度设置大一点另外 
    如果是SQL 2000的话 打上SP4
    SQL 2005的话 打上SP3
      

  3.   

    把SQL语句放在查询分析器执行一下,看什么错误。
      

  4.   

    sql 不會有錯的 執行過,沒問題啊
      

  5.   

    也已經升級到了8.00.2039, 這個查詢確實很複雜 sql睹不間斷連了 10多20行,調了好幾個數據庫
      

  6.   

    就是一個sql+rs.open
    就是open這行出錯了
      

  7.   

    多个语句多次rs.open吗?看看能不能想办法改成存储过程,和程序的接口尽量简化
      

  8.   

    多重步驟 OLE DB 操作發生錯誤。請檢查每一個可用的 OLE DB 狀態值。尚未完成任何操作。 看样子是程序哪里的问题,
      

  9.   

    就一個連接,一個sql,一次open 啊
      

  10.   

    能看下SQL语句有多复杂吗?我记得过于负责的查询,OLE DB是无法分析的。
      

  11.   

    SELECT a.TransactDate, (SELECT SUM(Profit)*-1 FROM ProfitDetail WHERE (ClosingDate=a.TransactDate) AND TradeType=3 AND MarketID IN (0,1)) AS T1, (SELECT SUM(Profit)*-1 FROM ProfitDetail WHERE (ClosingDate=a.TransactDate) AND TradeType=3 AND MarketID IN (4)) AS T2, (SELECT SUM(Profit)*-1 FROM ProfitDetail WHERE (ClosingDate=a.TransactDate) AND TradeType=3 AND MarketID IN (3)) AS T3, (SELECT SUM(Profit)*-1 FROM ProfitDetail WHERE (ClosingDate=a.TransactDate) AND TradeType=3 AND MarketID IN (8)) AS T4, (SELECT SUM(Profit)*-1 FROM ProfitDetail WHERE (ClosingDate=a.TransactDate) AND TradeType=1 AND MarketID IN (0,1)) AS T5, (SELECT SUM(Profit)*-1 FROM ProfitDetail WHERE (ClosingDate=a.TransactDate) AND TradeType=1 AND MarketID IN (4)) AS T6, (SELECT SUM(Profit)*-1 FROM ProfitDetail WHERE (ClosingDate=a.TransactDate) AND TradeType=1 AND MarketID IN (3)) AS T7, (SELECT SUM(Profit)*-1 FROM ProfitDetail WHERE (ClosingDate=a.TransactDate) AND TradeType=1 AND MarketID IN (8)) AS T8, (SELECT SUM(Profit)*-1 FROM ProfitDetail WHERE (ClosingDate=a.TransactDate) AND TradeType=0 AND MarketID IN (0,1))+(SELECT SUM(Profit) FROM ProfitDetail WHERE (ClosingDate=a.TransactDate) AND TradeType=2 AND MarketID IN (0,1)) AS T9, (SELECT SUM(Profit)*-1 FROM ProfitDetail WHERE (ClosingDate=a.TransactDate) AND TradeType=0 AND MarketID IN (4))+(SELECT SUM(Profit) FROM ProfitDetail WHERE (ClosingDate=a.TransactDate) AND TradeType=2 AND MarketID IN (4)) AS T10, (SELECT SUM(Profit)*-1 FROM ProfitDetail WHERE (ClosingDate=a.TransactDate) AND TradeType=0 AND MarketID IN (3))+(SELECT SUM(Profit) FROM ProfitDetail WHERE (ClosingDate=a.TransactDate) AND TradeType=2 AND MarketID IN (3)) AS T11, (SELECT SUM(Profit)*-1 FROM ProfitDetail WHERE (ClosingDate=a.TransactDate) AND TradeType=0 AND MarketID IN (8))+(SELECT SUM(Profit) FROM ProfitDetail WHERE (ClosingDate=a.TransactDate) AND TradeType=2 AND MarketID IN (8)) AS T12 FROM (SELECt TransactDate FROM Inventory WHERE TransactDate BETWEEN '2009/09/01' AND '2009/09/30' AND Bonus<0 GROUP BY TransactDate) a ORDER BY a.TransactDate
    這是最長的一個,其他是這個的一半左右,,如果是無法分析 ,那為啥有時候又正常啊,各位,希望各位繼續關注。謝謝!
      

  12.   

    SELECT a.TransactDate, (SELECT SUM(Profit)*-1 FROM ProfitDetail WHERE (ClosingDate=a.TransactDate) AND TradeType=3 AND MarketID IN (0,1)) AS T1, (SELECT SUM(Profit)*-1 FROM ProfitDetail WHERE (ClosingDate=a.TransactDate) AND TradeType=3 AND MarketID IN (4)) AS T2, (SELECT SUM(Profit)*-1 FROM ProfitDetail WHERE (ClosingDate=a.TransactDate) AND TradeType=3 AND MarketID IN (3)) AS T3, (SELECT SUM(Profit)*-1 FROM ProfitDetail WHERE (ClosingDate=a.TransactDate) AND TradeType=3 AND MarketID IN (8)) AS T4, (SELECT SUM(Profit)*-1 FROM ProfitDetail WHERE (ClosingDate=a.TransactDate) AND TradeType=1 AND MarketID IN (0,1)) AS T5, (SELECT SUM(Profit)*-1 FROM ProfitDetail WHERE (ClosingDate=a.TransactDate) AND TradeType=1 AND MarketID IN (4)) AS T6, (SELECT SUM(Profit)*-1 FROM ProfitDetail WHERE (ClosingDate=a.TransactDate) AND TradeType=1 AND MarketID IN (3)) AS T7, (SELECT SUM(Profit)*-1 FROM ProfitDetail WHERE (ClosingDate=a.TransactDate) AND TradeType=1 AND MarketID IN (8)) AS T8, (SELECT SUM(Profit)*-1 FROM ProfitDetail WHERE (ClosingDate=a.TransactDate) AND TradeType=0 AND MarketID IN (0,1))+(SELECT SUM(Profit) FROM ProfitDetail WHERE (ClosingDate=a.TransactDate) AND TradeType=2 AND MarketID IN (0,1)) AS T9, (SELECT SUM(Profit)*-1 FROM ProfitDetail WHERE (ClosingDate=a.TransactDate) AND TradeType=0 AND MarketID IN (4))+(SELECT SUM(Profit) FROM ProfitDetail WHERE (ClosingDate=a.TransactDate) AND TradeType=2 AND MarketID IN (4)) AS T10, (SELECT SUM(Profit)*-1 FROM ProfitDetail WHERE (ClosingDate=a.TransactDate) AND TradeType=0 AND MarketID IN (3))+(SELECT SUM(Profit) FROM ProfitDetail WHERE (ClosingDate=a.TransactDate) AND TradeType=2 AND MarketID IN (3)) AS T11, (SELECT SUM(Profit)*-1 FROM ProfitDetail WHERE (ClosingDate=a.TransactDate) AND TradeType=0 AND MarketID IN (8))+(SELECT SUM(Profit) FROM ProfitDetail WHERE (ClosingDate=a.TransactDate) AND TradeType=2 AND MarketID IN (8)) AS T12 FROM (SELECt TransactDate FROM Inventory WHERE TransactDate BETWEEN '2009/09/01' AND '2009/09/30' AND Bonus<0 GROUP BY TransactDate) a ORDER BY a.TransactDate
      

  13.   

    错了,是看这sql,估计是超时了。
      

  14.   

    Microsoft OLE DB Provider for ODBC Drivers error '80040e21'
    This error results from an attempt to get the next record before the previous database request has completed. You can avoid this error by buffering the page containing the form, so that it does not display in the browser until the data has been completely fetched and the page composed. To set buffering, add the following command to the top of the page:
    <% Response.Buffering=true %>大致意思是,数据还没来得及全部返回,页面就开始加载了,设置下缓存就会好。