5

こんにちは URL でアプリケーションにアクセスしようとすると、以下のエラーを含むエラー画面が表示されます。以前は、バックエンドで dbcc コマンドを使用して修正しました..bt 今は機能していません..

タイムアウトになりました。操作が完了する前にタイムアウト期間が経過したか、サーバーが応答していません。説明: 現在の 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]

上記で使用した開始日と終了日のパラメータを使用せず、dbo.FN_TCOV3_Report(@From_Date,@End_Date)AS allApps の代わりに dbo.FN_TCOV3 (@rpt_year)AS allAppsを呼び出すと、同じプロシージャが機能します。 . b/w これら 2 つの関数は、1 つはパラメータとして年のみを取り、もう 1 つは 2 つのパラメータ、つまり開始日と終了日を取ります。

両方のパラメーターを使用する必要があります。ご協力をお願いします。

4

2 に答える 2

7

クエリを本当に長時間実行する必要がある場合は、オブジェクトのCommandTimeoutプロパティを設定することでタイムアウト期間を延長できます( 5分間のタイムアウト、それに応じて対応するページのサーバータイムアウトも設定します)SqlCommandmyCom.CommandTimeout = 300;

とはいえ、クエリがそれほど長く実行されている理由がわからない場合は、調査して修正する必要があります。

検索する :

  • 欠落しているインデックス
  • ロック
  • 非効率的なアルゴリズム
于 2013-02-15T17:03:52.007 に答える