Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Как да хвана изключения за изчакване на SQLServer

За да проверите за изчакване, вярвам, че проверявате стойността на ex.Number. Ако е -2, значи имате ситуация на изчакване.

-2 е кодът за грешка за изчакване, върнат от DBNETLIB, MDAC драйвера за SQL Server. Това може да се види, като изтеглите Reflector и погледнете под System.Data.SqlClient.TdsEnums за TIMEOUT_EXPIRED.

Вашият код ще чете:

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

Код за демонстриране на неуспех:

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. Как да добавите ограничение по подразбиране към съществуваща колона в SQL Server

  2. Най-добрият еквивалент на IsInteger в SQL Server

  3. SQL Server:Базата данни заседна в състояние на възстановяване

  4. Променете ограничение CHECK в SQL Server с помощта на T-SQL

  5. Как да получите календарно тримесечие от дата в TSQL