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

SQL заявка бавна в .NET приложение, но мигновена в SQL Server Management Studio

Според моя опит обичайната причина, поради която заявката се изпълнява бързо в SSMS, но бавно от .NET, се дължи на разликите в SET на връзката -дънки. Когато се отвори връзка чрез SSMS или SqlConnection , куп SET командите се издават автоматично за настройка на средата за изпълнение. За съжаление SSMS и SqlConnection имат различен SET по подразбиране.

Една обща разлика е SET ARITHABORT . Опитайте да издадете SET ARITHABORT ON като първата команда от вашия .NET код.

SQL Profiler може да се използва за наблюдение кой SET командите се издават както от SSMS, така и от .NET, така че можете да намерите други разлики.

Следният код демонстрира как да издадете SET команда, но имайте предвид, че този код не е тестван.

using (SqlConnection conn = new SqlConnection("<CONNECTION_STRING>")) {
    conn.Open();

    using (SqlCommand comm = new SqlCommand("SET ARITHABORT ON", conn)) {
        comm.ExecuteNonQuery();
    }

    // Do your own stuff here but you must use the same connection object
    // The SET command applies to the connection. Any other connections will not
    // be affected, nor will any new connections opened. If you want this applied
    // to every connection, you must do it every time one is opened.
}


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Като оператор в Entity Framework?

  2. съхранявате арабски в SQL база данни

  3. Моментни снимки на базата данни на SQL Server -1

  4. Колона, подобна на идентичност, но въз основа на критерии за групиране

  5. Елиминиране на присъединяване:Когато SQL Server премахва ненужните таблици