sql >> Databáze >  >> RDS >> Sqlserver

SQL Query pomalý v aplikaci .NET, ale okamžitý v SQL Server Management Studio

Podle mých zkušeností je obvyklý důvod, proč dotaz běží rychle v SSMS, ale pomalý z .NET, kvůli rozdílům v SET připojení -tings. Když se otevře připojení pomocí SSMS nebo SqlConnection , spoustu SET jsou automaticky vydávány příkazy pro nastavení prostředí pro provádění. Bohužel SSMS a SqlConnection mít jinou SET výchozí.

Jeden společný rozdíl je SET ARITHABORT . Zkuste zadat SET ARITHABORT ON jako první příkaz z vašeho kódu .NET.

SQL Profiler lze použít ke sledování, který SET příkazy jsou vydávány jak SSMS, tak .NET, takže můžete najít další rozdíly.

Následující kód ukazuje, jak vydat SET příkaz, ale všimněte si, že tento kód nebyl testován.

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. Běžné chyby při migraci databází PostgreSQL z On-Prem na AWS RDS

  2. MYSQL ORDER BY CASE Problém

  3. Jak se vyhnout opakování spouštěcích volání v PostgreSQL 9.2.1

  4. psql:FATAL:databáze <uživatel> neexistuje