sql >> Database teknologi >  >> RDS >> Sqlserver

SQL-forespørgsel langsom i .NET-applikation, men øjeblikkelig i SQL Server Management Studio

Efter min erfaring er den sædvanlige årsag til, at en forespørgsel kører hurtigt i SSMS, men langsomt fra .NET, på grund af forskelle i forbindelsens SET -tings. Når en forbindelse åbnes af enten SSMS eller SqlConnection , en masse SET kommandoer udsendes automatisk for at opsætte eksekveringsmiljøet. Desværre SSMS og SqlConnection har forskellige SET standardindstillinger.

En almindelig forskel er SET ARITHABORT . Prøv at udstede SET ARITHABORT ON som den første kommando fra din .NET-kode.

SQL Profiler kan bruges til at overvåge hvilken SET kommandoer udstedes af både SSMS og .NET, så du kan finde andre forskelle.

Følgende kode viser, hvordan man udsteder et SET kommando, men bemærk, at denne kode ikke er blevet testet.

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. Sådan fjerner du ikke-arbejdstimer i Oracle

  2. Udvikling af PostgreSQL til Windows, del 3

  3. Sådan genopbygger du en inkonsekvent PostgreSQL-slave

  4. Opdater eller indsæt (flere rækker og kolonner) fra underforespørgsel i PostgreSQL