Asp.net 运行sql脚本时VB.NET中出现超时错误
有人能帮忙吗?我试图通过连接到服务器并使用存储过程在VisualStudio中创建网格视图。当我测试它时,我得到一个超时错误。有人能告诉我我能做什么吗?查询本身大约需要7分钟才能完成。数据存储在一个表中。如何延长超时时间 这是我的连接脚本:Asp.net 运行sql脚本时VB.NET中出现超时错误,asp.net,sql,vb.net,sql-server-2008,Asp.net,Sql,Vb.net,Sql Server 2008,有人能帮忙吗?我试图通过连接到服务器并使用存储过程在VisualStudio中创建网格视图。当我测试它时,我得到一个超时错误。有人能告诉我我能做什么吗?查询本身大约需要7分钟才能完成。数据存储在一个表中。如何延长超时时间 这是我的连接脚本: <%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default2.aspx.vb" Inherits="Default2" %> <!DOCTYPE html PUBLIC
<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default2.aspx.vb" Inherits="Default2" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>SQL-EDD 4 SERVER</title>
</head>
<body>
<asp:GridView ID="GridView1" DataSourceID="SqlDataSource1" AutoGenerateColumns="False"
runat="server">
<Columns>
<asp:BoundField DataField="DBNAME" HeaderText="DBNAME" SortExpression="DBNAME" />
<asp:BoundField DataField="IMGS" HeaderText="IMGS" ReadOnly="True"
SortExpression="IMGS" />
<asp:BoundField DataField="IMG_DATE_UPLOAD" HeaderText="IMG_DATE_UPLOAD"
ReadOnly="True" SortExpression="IMG_DATE_UPLOAD" />
</Columns>
</asp:GridView>
<asp:SqlDataSource ID="SqlDataSource1" runat="server" SelectCommand="IMGCTR"
ConnectionString="<%$ ConnectionStrings:JEFFREYEDD4 %>"
SelectCommandType="StoredProcedure" />
<form id="form1" runat="server">
<div>
</div>
</form>
</body>
</html>
错误如下:
“/lawsqlreporting”应用程序中出现服务器错误。
超时已过期。操作完成前已过超时时间,或者服务器没有响应。
声明已终止。
描述:执行当前web请求期间发生未处理的异常。请查看堆栈跟踪以了解有关错误的更多信息以及错误在代码中的起源
异常详细信息:System.Data.SqlClient.SqlException:超时已过期。操作完成前已过超时时间,或者服务器没有响应。
声明已终止
源错误:
在执行当前web请求期间生成了未经处理的异常。有关异常的起源和位置的信息可以使用下面的异常堆栈跟踪来识别
堆栈跟踪:
[SqlException(0x80131904):超时已过期。操作完成前已过超时时间,或者服务器没有响应。
该声明已终止。]
System.Data.SqlClient.SqlConnection.OnError(SqlException异常,布尔breakConnection)+1951450
System.Data.SqlClient.SqlInternalConnection.OnError(SqlException异常,布尔breakConnection)+4849003
System.Data.SqlClient.TdsParser.throweexception和warning(TdsParserStateObject stateObj)+194
System.Data.SqlClient.TdsParser.Run(RunBehavior RunBehavior,SqlCommand cmdHandler,SqlDataReader dataStream,BulkCopySimpleResultSet bulkCopyHandler,TdsParserStateObject stateObj)+2394
System.Data.SqlClient.SqlDataReader.ConsumerMetadata()+33
System.Data.SqlClient.SqlDataReader.get_MetaData()+83
System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds、RunBehavior、String ResetOptionString)+297
System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior,RunBehavior RunBehavior,Boolean returnStream,Boolean async)+954
System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior、RunBehavior RunBehavior、Boolean returnStream、String方法、DbAsyncResult结果)+162
System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior,RunBehavior RunBehavior,Boolean returnStream,String方法)+32
System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior,String方法)+141
System.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior)+12
System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader(CommandBehavior)+10
System.Data.Common.DbDataAdapter.FillInternal(数据集数据集,数据表[]数据表,Int32 StartRecords,Int32 maxRecords,字符串srcTable,IDbCommand命令,CommandBehavior)+130
System.Data.Common.DbDataAdapter.Fill(数据集数据集、Int32 startRecord、Int32 maxRecords、字符串srcTable、IDbCommand命令、CommandBehavior行为)+287
System.Data.Common.DbDataAdapter.Fill(数据集数据集,字符串srcTable)+92
System.Web.UI.WebControls.SqlDataSourceView.ExecuteSelect(DataSourceSelectArguments)+1297
System.Web.UI.DataSourceView.Select(DataSourceSelectArguments参数,DataSourceViewSelectCallback参数)+19
System.Web.UI.WebControls.DataBoundControl.PerformSelect()+142
System.Web.UI.WebControls.BaseDataBoundControl.DataBind()+73
System.Web.UI.WebControls.GridView.DataBind()+4
System.Web.UI.WebControls.BaseDataBoundControl.EnsureDataBound()+82
System.Web.UI.WebControl.CompositeDataBoundControl.CreateChildControls()+72
System.Web.UI.Control.ensureChildControl()+87
System.Web.UI.Control.PreRenderRecursiveInternal()+44
System.Web.UI.Control.PreRenderRecursiveInternal()+171
System.Web.UI.Page.ProcessRequestMain(布尔includeStagesBeforeAsyncPoint,布尔includeStagesAfterAsyncPoint)+842
版本信息:Microsoft.NET Framework版本:2.0.50727.4952;ASP.NET版本:2.0.50727.4955首先-延长超时时间不是解决方案。不过,以下是如何使用数据源:
protected void SqlDataSource1_Selecting(object sender,
SqlDataSourceSelectingEventArgs e)
{
e.Command.CommandTimeout = 30;
}
以下是您应该执行的分析:
第一:当存储过程在页面上下文之外执行时(例如在查询窗口中),它的执行是否令人满意?如果不是,问题在于查询。谷歌“优化sql查询”,你会得到很多好东西
如果是,那么应用程序中的其他查询将如何执行(假设这不是您尝试使用的第一个查询)?如果它们工作正常,请仔细检查您使用的连接字符串是否相同。首先,延长超时时间不是解决方案。不过,以下是如何使用数据源:
protected void SqlDataSource1_Selecting(object sender,
SqlDataSourceSelectingEventArgs e)
{
e.Command.CommandTimeout = 30;
}
以下是您应该执行的分析:
第一:当存储过程在页面上下文之外执行时(例如在查询窗口中),它的执行是否令人满意?如果不是,问题在于查询。谷歌“优化sql查询”,你会得到很多好东西
如果是,那么应用程序中的其他查询将如何执行(假设这不是您尝试使用的第一个查询)?如果它们工作正常,请仔细检查您使用的连接字符串是否相同。为了增加超时时间,您可以增加获取数据的DataCommand的CommandTimeout。使用SqlDataSource时,可以使用事件处理程序获取命令。 在页面的后面插入以下代码:
Private Sub SqlDataSource1_Selecting(sender as object, _
e as SqlDataSourceSelectingEventArgs) handles SqlDataSource1.Selecting
e.Command.CommandTimeout = 500
End Sub
为了增加web应用程序
<httpRuntime
executionTimeout = "600"
/>
CREATE Table #TableNames (DBNameID INT Not NUll Identity, DBName VarCHAR(50))
CREATE TABLE #TableResults (DBNAME NVARCHAR(MAX), IMG_DATE_UPLOAD DATETIME, IMG_UPLOAD_COUNT INT)
Insert Into #TableNames(DBName)
SELECT [NAME] FROM sys.databases
WHERE [name] like 'z%' and [name] not like 'Z1301_TEVA_SINGLE'
AND [NAME] NOT LIKE 'Z1016_E-100016R'
AND CREATE_DATE BETWEEN GETDATE()-30 AND GETDATE() ORDER BY [Name]
DECLARE @Counter INT = 1;
DECLARE @DBName VARCHAR(MAX)
DECLARE @varSQL NVARCHAR(MAX)
Declare @rows INT;
select @rows = COUNT(DBNameID) from #TableNames
While @Counter <= @rows BEGIN
SET @DBName = (SELECT DBName from #TableNames where DBNameID = @Counter)
Set @varSQL='INSERT INTO #TableResults (DBNAME, IMG_UPLOAD_COUNT, IMG_DATE_UPLOAD)
SELECT ''['+@DBNAME+']'' AS DBNAME, SUM(PGCOUNT) AS IMAGES, convert(NVARCHAR(10), CREATED, 101) AS CREATED
FROM ['+@DBNAME+'].dbo.tbldoc WHERE CREATED BETWEEN ''2011-01-16'' AND ''2011-01-22'' AND PGCOUNT >0 GROUP BY CREATED
HAVING SUM(PGCOUNT) IS NOT NULL'
SET @Counter += 1
END
INSERT #TableResults (DBNAME, IMG_UPLOAD_COUNT)
SELECT 'TOTAL_IMGSIZE_IN_MBS', SUM(IMG_UPLOAD_COUNT)
FROM #TableResults
SELECT DBNAME, SUM(IMG_UPLOAD_COUNT) AS IMGS, convert(NVARCHAR(10), IMG_DATE_UPLOAD, 101) AS IMG_DATE_UPLOAD
FROM #TableResults where IMG_UPLOAD_COUNT > 0
GROUP BY DBNAME, IMG_DATE_UPLOAD
ORDER BY IMG_DATE_UPLOAD
DROP TABLE #TableNames
DROP TABLE #TableResults