sql >> Database >  >> RDS >> Sqlserver

SQL-query traag in .NET-toepassing maar onmiddellijk in SQL Server Management Studio

In mijn ervaring is de gebruikelijke reden waarom een ​​query snel wordt uitgevoerd in SSMS, maar traag vanuit .NET, te wijten aan verschillen in de SET van de verbinding. -dingen. Wanneer een verbinding wordt geopend door SSMS of SqlConnection , een heleboel SET opdrachten worden automatisch gegeven om de uitvoeringsomgeving in te stellen. Helaas SSMS en SqlConnection hebben verschillende SET standaardinstellingen.

Een veelvoorkomend verschil is SET ARITHABORT . Probeer SET ARITHABORT ON als het eerste commando van je .NET-code.

SQL Profiler kan worden gebruikt om te controleren welke SET commando's worden gegeven door zowel SSMS als .NET, zodat je andere verschillen kunt vinden.

De volgende code laat zien hoe u een SET . uitgeeft commando, maar merk op dat deze code niet is getest.

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. Waarom kan NULL in SQL niet overeenkomen met NULL?

  2. Een use-case voor sp_prepare / sp_prepexec

  3. Configuratie met hoge beschikbaarheid voor ClusterControl-knooppunten met behulp van CMON HA

  4. PostgreSQL-tabelvariabele