跳到主要內容

[ASP.NET] 攔劫SQL EXEC. TIMEOUT

今天系統突然遇到SQL執行TIMEOUT的問題,
程式如何CATCH這個問題,很簡單,運用"SQLException"就可以了,語法如下
            try
            {
                command.Connection.Open();
                command.ExecuteNonQuery();
            }
            catch (SqlException ex)
            {
                for (int i = 0; i < ex.Errors.Count; i++)
                {
                    errorMessages.Append("Index #" + i + "\n" +
                        "Message: " + ex.Errors[i].Message + "\n" +
                        "Error Number: " + ex.Errors[i].Number + "\n" +
                        "LineNumber: " + ex.Errors[i].LineNumber + "\n" +
                        "Source: " + ex.Errors[i].Source + "\n" +
                        "Procedure: " + ex.Errors[i].Procedure + "\n");
                }
                Console.WriteLine(errorMessages.ToString());
            }

switch ( sqlException.Number )
        {
            case -2:   // Client Timeout
            case 701:  // Out of Memory
            case 1204: // Lock Issue 

            case 1205: // >>> Deadlock Victim

            case 1222: // Lock Request Timeout
            case 8645: // Timeout waiting for memory resource 
            case 8651: // Low memory condition 
            ...
        }

  




留言

這個網誌中的熱門文章

台大教授的網站

陳少傑教授 http://soclab.ee.ntu.edu.tw/http2005/ CAD System Lab 軟硬體共同設計 (Hardware-Software Co-Design) Introduction to Electronic Design Automation 計算機結構 (Computer Architecture) 陳耀文教授 Introduction to Digital systems, Spring 1998 Introduction to VLSI Design, Fall 2000 Physical Design for Nanometer ICs, Spring 2007 Algorithms, Fall 2007 NTU SOC VSLI-EDA

[SQL]暫存資料表重覆確認(temp table)

在MS SQL Server下, 若要避開暫存資料表重覆建立的問題, 可以使用T-SQL語法判斷:OBJECT_ID('tempdb..#TEMP_TABLE_Name') 例如: IF OBJECT_ID('tempdb..#TEMP_TABLE') is not NULL DELETE FROM #TEMP_TABLE --暫存資料表已存在 ELSE Create TABLE #TEMP_TABLE(CITY NVARCHAR(255),TOWNS NVARCHAR(255)) --暫存資料表未存在