Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

SQL Query lambat dalam aplikasi .NET tetapi seketika di SQL Server Management Studio

Dalam pengalaman saya, alasan umum mengapa kueri berjalan cepat di SSMS tetapi lambat dari .NET adalah karena perbedaan SET koneksi -tings. Saat koneksi dibuka oleh SSMS atau SqlConnection , sekelompok SET perintah secara otomatis dikeluarkan untuk mengatur lingkungan eksekusi. Sayangnya SSMS dan SqlConnection memiliki SET yang berbeda default.

Satu perbedaan umum adalah SET ARITHABORT . Coba keluarkan SET ARITHABORT ON sebagai perintah pertama dari kode .NET Anda.

SQL Profiler dapat digunakan untuk memantau SET perintah dikeluarkan oleh SSMS dan .NET sehingga Anda dapat menemukan perbedaan lainnya.

Kode berikut menunjukkan cara mengeluarkan SET perintah tetapi perhatikan bahwa kode ini belum diuji.

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. Performa agregasi bersyarat

  2. Kinerja SQL JOIN vs IN?

  3. Cara menentukan apakah bilangan itu float atau integer

  4. Hapus karakter aneh ( A dengan topi) dari kolom varchar SQL Server

  5. NEWID() vs NEWSEQUENTIALID() di SQL Server:Apa Bedanya?