2010-10-27 30 views

Trả lời

16

Bạn có thể thiết lập các CommandTimeout vào kết nối cơ bản, nhưng một nhiều, nhiều, ý tưởng tốt hơn sẽ được dành thời gian và công sức để chẩn đoán tại sao thời gian chờ đang xảy ra ở nơi đầu tiên.

Thậm chí nếu bạn "giải quyết" vấn đề bằng cách tăng cường CommandTimeout, bạn có thể có khả năng gây ra các sự cố chặn khác trong cơ sở dữ liệu của mình. Hãy tìm các truy vấn chặn hoặc các kế hoạch truy vấn kém hoặc các bảng và chỉ mục được thiết kế xấu thay thế.

1

Bất cứ điều gì bạn làm, ngoài việc sửa chữa SQL trong thủ tục được lưu trữ chỉ là che giấu vấn đề thực (SQL).

Bạn cần đặt câu hỏi về việc tăng tốc quy trình, nơi bạn đăng các bảng và mã thủ tục được lưu trữ sao cho nó có thể được sửa một lần và cho tất cả.

+1

Tôi biết nhưng với 1 triệu lần chèn, tôi không có lựa chọn nào khác ... –

+4

Điều đó sẽ là thông tin rất quan trọng để đưa vào bài đăng gốc, bạn có nghĩ vậy không? –

+1

1 triệu insertions từ một cuộc gọi thủ tục lưu trữ duy nhất ?? những gì đang xảy ra với điều đó ??? –

3
using (var conn = new SqlConnection(ConnectionStrings.toMyDB)) 
{ 
    conn.Open(); 
    using (var cmd = new SqlCommand("myProc", conn)) 
    { 
     cmd.CommandType = CommandType.StoredProcedure; 
     cmd.CommandTimeout = 30; // Increase this to allow the proc longer to run 
     cmd.Parameters.AddWithValue("@Param", myParam); 
     cmd.ExecuteNonQuery(); 
    } 
} 
+0

Patrice Pezillier đang hỏi về thời gian chờ trong EF, và ví dụ của bạn là ADO.NET –

+0

Làm cách nào tôi có thể chuyển kết quả vào DataSet? Tôi bây giờ với công nghệ này. –

4
 using (var context = new MyDbEntities()) 
     { 
      context.CommandTimeout = 600; 
      context.MyLongRunningStoredProc(); 
     } 
0

Sử dụng chỉ số giải quyết vấn đề của tôi, tôi phát hiện ra rằng thực hiện các thủ tục lưu trữ với ExecuteStoreCommand không có thời gian tương tự như trong SQL.

Bạn có thể sử dụng SQL Management Studio để tìm chỉ mục mà bạn cần, chọn mã sql cho quy trình được lưu trữ, nhấp chuột phải và "Hiển thị kế hoạch thực hiện ước tính". Điều này sẽ tối ưu hóa thủ tục lưu trữ của bạn.

Các vấn đề liên quan