Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Truy vấn SQL chậm trong ứng dụng .NET nhưng ngay lập tức trong SQL Server Management Studio

Theo kinh nghiệm của tôi, lý do thông thường tại sao truy vấn chạy nhanh trong SSMS nhưng chậm từ .NET là do sự khác biệt trong SET của kết nối -cốt. Khi kết nối được mở bằng SSMS hoặc SqlConnection , một loạt SET các lệnh được tự động đưa ra để thiết lập môi trường thực thi. Rất tiếc, SSMS và SqlConnectionSET khác nhau mặc định.

Một điểm khác biệt phổ biến là SET ARITHABORT . Thử phát hành SET ARITHABORT ON là lệnh đầu tiên từ mã .NET của bạn.

SQL Profiler có thể được sử dụng để theo dõi SET nào các lệnh được phát hành bởi cả SSMS và .NET nên bạn có thể tìm thấy các điểm khác biệt khác.

Đoạn mã sau minh họa cách phát hành một SET nhưng lưu ý rằng mã này chưa được kiểm tra.

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. SQL Server:Tôi có nên sử dụng bảng information_schema trên bảng sys không?

  2. Lỗi máy chủ SQL 109:Có nhiều cột trong câu lệnh INSERT hơn giá trị được chỉ định trong mệnh đề VALUES

  3. Cách giao dịch ngầm hoạt động trong SQL Server

  4. Sự khác biệt giữa VARCHAR và NVARCHAR trong máy chủ SQL - Hướng dẫn SQL Server / T-SQL Phần 32

  5. Xóa các số 0 đứng đầu khỏi một trường trong câu lệnh SQL