2013-02-15 39 views
4

嗨當​​我試圖通過URL訪問我的應用程序我收到包含以下錯誤的錯誤屏幕。以前,我通過在後端使用dbcc命令來修復它..bt現在,這不起作用..如何解決System.Data.SqlClient.SqlException:超時過期

超時已過期。操作完成之前超時的時間或服務器沒有響應。 描述:執行當前Web請求期間發生未處理的異常。請查看堆棧跟蹤以獲取有關該錯誤的更多信息以及源代碼的位置。

異常詳細信息:System.Data.SqlClient.SqlException:超時已過期。操作完成之前超時的時間或服務器沒有響應。

源錯誤:

在當前web請求的執行過程中生成未處理的異常。關於異常的來源和位置的信息可以使用下面的異常堆棧跟蹤來標識。

這裏是我從我的.NET應用程序調用的存儲過程的源代碼。

 USE [TCO] 
GO 
     ALTER PROC [dbo].[SP_TCOV3] (@year INT) AS 
DECLARE @rpt_year INT; 
IF @year > 2011 
BEGIN 
SET @rpt_year = 2011; 
END 
ELSE 
BEGIN 
SET @rpt_year = @year; 
END 
DECLARE @From_Date DATETIME='01-01-2012' -- mm/dd/yyyy 
DECLARE @End_Date DATETIME=(SELECT TOP 1 DATEADD(dd, -DAY(DATEADD(m,1,dbo.ManpowerCost.payment_date)), DATEADD(m,1,dbo.ManpowerCost.payment_date)) as value 
FROM dbo.ManpowerCost order by payment_date desc) 

(
SELECT 
     allApps.[Application Name],   
     '$'+(CAST((CAST(allApps.[BAM Staff Support] AS DECIMAL(10,2))) as varchar(50)))AS [BAM Staff Support], 
     '$'+(CAST((CAST(allApps.[BAM Non-Shell Support] AS DECIMAL(10,2))) as varchar(50)))AS [BAM Non-Shell Support] , 
     '$'+(CAST((CAST(allApps.[BSM DBA Support] AS DECIMAL(10,2))) as varchar(50)))AS [BSM DBA Support] , 
     '$'+(CAST((CAST(allApps.[Middleware Support] AS DECIMAL(10,2))) as varchar(50))) AS [BSM Middleware Support], 
     '$'+(CAST((CAST(allApps.[IRM Logical Access] AS DECIMAL(10,2))) as varchar(50)))AS [IRM Logical Access] , 
     '$'+(CAST((CAST(allApps.[Application Licensing and Maintenance] AS DECIMAL(10,2))) as varchar(50))) AS [Application License and Maintenance], 
     '$'+(CAST((CAST(allApps.[Middleware Licensing and Maintenance] AS DECIMAL(10,2))) as varchar(50)))as [Middleware License and Maintenance], 
     '$'+(CAST((CAST(allApps.[Database Licensing and T-System DBA Maintenance] AS DECIMAL(10,2))) as varchar(50))) AS [TS DBA Maintenance], 
     '$'+(CAST((CAST(allApps.[Hosting and Storage] AS DECIMAL(10,2))) as varchar(50)))AS [Hosting and Storage] , 
     '$'+(CAST((CAST(allApps.[Telecom Connection Charge] AS DECIMAL(10,2))) as varchar(50))) AS [Telecom Connection Charges], 
     '$'+(CAST((CAST(allApps.[Total Application TCO] AS DECIMAL(10,2))) as varchar(50)))AS [Total Application TCO] 
FROM 
     --dbo.FN_TCOV3(@rpt_year)AS allApps 
     dbo.FN_TCOV3_Report(@From_Date,@End_Date)AS allApps 

)ORDER BY allApps.[Application Name] 

同樣的proc工作,如果我不使用我上面 使用開始日期和結束日期參數,並調用dbo.FN_TCOV3(@rpt_year)AS allApps而不是dbo.FN_TCOV3_Report(@From_Date ,@ End_Date)AS allApps,唯一的差異。 b/w這兩個功能是一個只需一年的參數,另一個帶2個參數即開始和結束日期。

我需要使用這兩個參數,請協助。

+0

由於各種原因可能發生超時。請顯示你正在嘗試使用sql-server ... – Kaf 2013-02-15 16:50:35

回答

6

如果查詢真的需要很長一段時間的運行,可以延長通過設置SqlCommand對象的CommandTimeout財產的超時時間(myCom.CommandTimeout = 300;爲5分鐘車超時;也相應地設置相應的頁面服務器超時)

這就是說,如果你不知道爲什麼你的查詢運行那麼久,你必須調查和修復它。

搜索:

  • 缺失索引
  • 低效率的算法
0

在SQL Server Management Studio中,高亮顯示查詢和 單擊顯示估計的執行計劃。 索引尋求是好的。如果有索引掃描, 會在您的表格的列上創建一個索引。 這解決了我的問題。

相關問題