Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

SQL Query wolno w aplikacji .NET, ale natychmiastowo w SQL Server Management Studio

Z mojego doświadczenia wynika, że ​​zwykłym powodem, dla którego zapytanie działa szybko w programie SSMS, ale wolno z platformy .NET, są różnice w SET połączenia -tings. Gdy połączenie zostanie otwarte przez SSMS lub SqlConnection , kilka SET polecenia są wydawane automatycznie w celu skonfigurowania środowiska wykonawczego. Niestety SSMS i SqlConnection mieć inny SET domyślne.

Jedną wspólną różnicą jest SET ARITHABORT . Spróbuj wydać SET ARITHABORT ON jako pierwsze polecenie z twojego kodu .NET.

SQL Profiler może być używany do monitorowania, które SET polecenia są wydawane zarówno przez SSMS, jak i .NET, więc możesz znaleźć inne różnice.

Poniższy kod pokazuje, jak wydać SET polecenie, ale pamiętaj, że ten kod nie został przetestowany.

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. Wyrażenie regularne MSSQL

  2. Pobierz krótką nazwę dnia w SQL Server (T-SQL)

  3. Połącz wiele wyników w podzapytanie w jedną wartość oddzieloną przecinkami

  4. Porównanie typów danych daty i godziny w SQL Server

  5. Usuń liczby z serwera sql string