Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Cách bắt các ngoại lệ hết thời gian chờ của SQLServer

Để kiểm tra thời gian chờ, tôi tin rằng bạn kiểm tra giá trị của ex.Number. Nếu nó là -2, thì bạn có một tình huống hết thời gian chờ.

-2 là mã lỗi cho thời gian chờ, được trả về từ DBNETLIB, trình điều khiển MDAC cho SQL Server. Bạn có thể thấy điều này bằng cách tải xuống Reflector và xem trong System.Data.SqlClient.TdsEnums cho TIMEOUT_EXPIRED.

Mã của bạn sẽ đọc:

if (ex.Number == -2)
{
     //handle timeout
}

Mã để chứng minh sự thất bại:

try
{
    SqlConnection sql = new SqlConnection(@"Network Library=DBMSSOCN;Data Source=YourServer,1433;Initial Catalog=YourDB;Integrated Security=SSPI;");
    sql.Open();

    SqlCommand cmd = sql.CreateCommand();
    cmd.CommandText = "DECLARE @i int WHILE EXISTS (SELECT 1 from sysobjects) BEGIN SELECT @i = 1 END";
    cmd.ExecuteNonQuery(); // This line will timeout.

    cmd.Dispose();
    sql.Close();
}
catch (SqlException ex)
{
    if (ex.Number == -2) {
        Console.WriteLine ("Timeout occurred");
    }
}


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Trả lại tất cả các hàng từ một phân vùng cụ thể trong SQL Server (T-SQL)

  2. Cách khắc phục “Chức năng phân vùng được liên kết tạo ra nhiều phân vùng hơn số nhóm tệp được đề cập trong lược đồ” Msg 7707 trong SQL Server

  3. PARSE () so với CAST () so với CONVERT () trong SQL Server:Sự khác biệt là gì?

  4. Nhà cung cấp Microsoft OLE DB cho SQL Server có hỗ trợ TLS 1.2 không

  5. Biết khi nào cần thử lại hoặc không thành công khi gọi SQL Server từ C #?