异步执行的问题(关于MultipleActiveResultSets的错误)
程序文件 ************************************************
<%@ Page Language= "VB "%>
<%@ Import Namespace= "system.data " %>
<%@ Import Namespace= "system.data.sqlclient " %>
<%@ Import Namespace= "system.configuration " %>
<script runat= "server ">
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
Dim conn As SqlConnection
Dim OCmd As SqlCommand = New SqlCommand()
Dim CCmd As SqlCommand = New SqlCommand()
Dim OrdersReader As SqlDataReader
Dim CustReader As SqlDataReader
Dim OASyncResult As IAsyncResult
Dim CASyncResult As IAsyncResult
Dim WHandles(1) As System.Threading.WaitHandle
Dim OrdersWHandle As System.Threading.WaitHandle
Dim CustWHandle As System.Threading.WaitHandle
conn = New SqlConnection()
conn.ConnectionString = ConfigurationManager.ConnectionStrings( "DSN_NorthWind ").ConnectionString
CCmd.CommandText = "select * from Customers where CompanyName= 'Alfreds Futterkiste ' "
CCmd.CommandType = CommandType.Text
CCmd.Connection = conn
' Selecting all orders for a specific customer
OCmd.CommandText = "select Customers.companyName, Customers.contactName, Orders.OrderID, " & _
"Orders.OrderDate, Orders.requiredDate, Orders.shippedDate from orders, customers where " & _
" orders.CustomerID = customers.customerID and customers.companyName = 'Alfreds FutterKiste ' " & _
" order by Customers.CompanyName, Customers.ContactName "
OCmd.CommandType = CommandType.Text
OCmd.Connection = conn
conn.Open()
' Retrieving customer information asynchronously
CAsyncResult = CCmd.BeginExecuteReader()
' Retrieving orders list asynchronously
OASyncResult = OCmd.BeginExecuteReader()
CustWHandle = CASyncResult.AsyncWaitHandle
OrdersWHandle = OASyncResult.AsyncWaitHandle
' Filling Wait Handles array with the two wait handles we are going to use in this code
WHandles(0) = CustWHandle
WHandles(1) = OrdersWHandle
System.Threading.WaitHandle.WaitAll(WHandles)
CustReader = CCmd.EndExecuteReader(CASyncResult)
OrdersReader = OCmd.EndExecuteReader(OASyncResult)
gvCustomers.DataSource = CustReader
gvCustomers.DataBind()
gvOrders.DataSource = OrdersReader
gvOrders.DataBind()
conn.Close()
End Sub
</script>
<html xmlns= "http://www.w3.org/1999/xhtml " >
<head runat= "server ">
<title> Wait All Approach </title>
</head>
<body>
<form id= "form1 " runat= "server ">
<div>
<asp:GridView ID= "gvCustomers " Width= "100% " runat= "server "> </asp:GridView>
<br /> <br />
<asp:GridView ID= "gvOrders " Width= "100% " AutoGenerateColumns= "false " runat= "server ">
<Columns>
<asp:BoundField HeaderText= "Company Name " DataField= "CompanyName " />
<asp:BoundField HeaderText= "Contact Name " DataField= "ContactName " />
<asp:BoundField HeaderText= "Order Date " DataField= "orderdate " DataFormatString= "{0:d} " />
<asp:BoundField HeaderText= "Required Date " DataField= "requireddate " DataFormatString= "{0:d} " />
<asp:BoundField HeaderText= "Shipped Date " DataField= "shippeddate " DataFormatString= "{0:d} " />
</Columns>
</asp:GridView>
</div>
</form>
</body>
</html>
************************************************
web.config中的连接 *******************************************
<connectionStrings>
<add name= "DSN_Northwind " connectionString= " Data Source=(local);Initial Catalog=Northwind;User Id=sa;Password=password; Asynchronous Processing=true; MultipleActiveResultSets=true "> </add>
</connectionStrings>
***********************************************************
错误提示 ************************************************
“/WebSite1”应用程序中的服务器错误。
--------------------------------------------
此连接不支持 MultipleActiveResultSets。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: System.InvalidOperationException: 此连接不支持 MultipleActiveResultSets。
源错误:
行 42:
行 43: ' Retrieving orders list asynchronously
行 44: OASyncResult = OCmd.BeginExecuteReader()
行 45:
行 46: CustWHandle = CASyncResult.AsyncWaitHandle
源文件: D:\work\dotNet\WebSite1\mars.aspx 行: 44
堆栈跟踪:
[InvalidOperationException: 此连接不支持 MultipleActiveResultSets。]
System.Data.SqlClient.CachedAsyncState.SetActiveConnectionAndResult(DbAsyncResult result, SqlConnection activeConnection) +108
System.Data.SqlClient.SqlCommand.InternalBeginExecuteReader(AsyncCallback callback, Object stateObject, CommandBehavior behavior) +302
System.Data.SqlClient.SqlCommand.BeginExecuteReader(AsyncCallback callback, Object stateObject, CommandBehavior behavior) +95
System.Data.SqlClient.SqlCommand.BeginExecuteReader() +10
ASP.mars_aspx.Page_Load(Object sender, EventArgs e) in D:\work\dotNet\WebSite1\mars.aspx:44
System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e) +13
System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) +45
System.Web.UI.Control.OnLoad(EventArgs e) +80
System.Web.UI.Control.LoadRecursive() +49
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +3743
--------------------------------------------
版本信息: Microsoft .NET Framework 版本:2.0.50727.42; ASP.NET 版本:2.0.50727.210
********************************************************
请问这个错误怎么处理,谢谢
[解决办法]
are you using SQL Server 2005?
[解决办法]
MultipleActiveResultSets is only supported by SQL Server 2005