2013-02-12 56 views
5

Tôi muốn tạo kết nối cơ sở dữ liệu với SQL Server của mình không thành công. Làm thế nào tôi có thể giảm thời gian chờ? Tôi đã thử thêm Connection Timeout=1 trong chuỗi kết nối của tôi, tuy nhiên điều này dường như không tạo nên sự khác biệt.Làm cách nào để giảm thời gian chờ kết nối với Khung thực thể?

Với Connection Timeout=500, mất khoảng 8 phút 30 giây để hết thời gian chờ. Điều này được mong đợi. Với Connection Timeout=1, mất khoảng 40 giây để hết thời gian chờ lâu hơn mong đợi.

Tôi tìm thấy thuộc tính EntityConnection.ConnectionTimeout nhưng chỉ đọc. Tôi có thể làm gì khác để giảm thời gian chờ này không? Đây có phải là vấn đề với Thực thể không?

CẬP NHẬT: Đây là chuỗi kết nối của tôi. Nó vẫn mất ~ 40 giây để hết thời gian chờ.

<add name="KofaxAdminToolsEntities" connectionString="metadata=res://*/DB.Model.KofaxAdminTools.csdl|res://*/DB.Model.KofaxAdminTools.ssdl|res://*/DB.Model.KofaxAdminTools.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=MY_DATASOURCE;initial catalog=MY_CATALOG;persist security info=True;user id=MY_USER;password=MY_PASSWORD;MultipleActiveResultSets=True;App=EntityFramework;Connection Timeout=1&quot;" providerName="System.Data.EntityClient" /> 

UPDATE 2: Vì vậy, tôi phát hiện ra rằng thời gian chờ là một thời gian chờ tcp, không phải là một sql kết nối timeout. Nếu máy của tôi có thể tiếp cận máy chủ, giải pháp @marc_s sẽ hoạt động, tuy nhiên, vì tôi không thể kết nối với máy chủ lưu trữ đó, thời gian chờ tcp sẽ được phát. Có ai biết làm thế nào để giảm thời gian chờ tcp cho một SqlConnection?

+0

Bạn có thể chỉ định nó trong chuỗi kết nối –

+0

Bạn có thể vui lòng đăng chuỗi kết nối của mình không? – IronMan84

+0

Bản cập nhật 2 của bạn là chính xác. Trên dev địa phương của tôi, tôi có một Alias ​​được định nghĩa (sử dụng TCP). Thời gian chờ chuỗi kết nối hoạt động nhưng mất nhiều thời gian hơn bất kỳ thứ gì bạn đã đặt trong chuỗi kết nối khi tôi nhấn máy chủ bằng bí danh. Nếu tôi thay đổi tên nguồn dữ liệu thành tên thực tế (không phải là bí danh) thì thời gian chờ kết nối = 1 hoạt động như mong đợi. Cảm ơn bạn. –

Trả lời

0

Đặt đoạn mã sau trong constructor của lớp DbContext của bạn:

((IObjectContextAdapter)this).ObjectContext.CommandTimeout = 1; 
+4

Đó là thời gian chờ lệnh ** ** - khoảng thời gian mà lệnh đang chạy có thể sử dụng hết trước khi hết giờ. Điều này có ** NOTHING ** để thực hiện với ** thời gian chờ kết nối ** (thời gian tối đa cho phép cho ** kết nối ** đến cơ sở dữ liệu được mở) –

+0

Cài đặt web.config như thế nào? Cái gì đó có thể được thay đổi mà không cần biên dịch lại đầy đủ và xuất bản. – Triynko

1

ở đâu và làm thế nào bạn xác định rằng thời gian chờ kết nối?

Tôi chỉ cố gắng và bổ sung này để chuỗi kết nối EF của mình (sử dụng cơ sở dữ liệu EF-đầu tiên) - và nó hoạt động như mong đợi: với dịch vụ SQL Server dừng lại, kết nối cố gắng thời gian ra gần như ngay lập tức ....

<add name="myEntities" 
    connectionString="metadata=res://*/People.csdl|res://*/People.ssdl|res://*/People.msl;provider=System.Data.SqlClient; 
      provider connection string=&quot;data source=.;initial catalog=mydb; 
      integrated security=True;connect timeout=1;multipleactiveresultsets=True; 
             ***************** 
      App=EntityFramework&quot;" 
    providerName="System.Data.EntityClient" /> 

(EF chuỗi kết nối chia tay và bao bọc cho rõ ràng - điều này sẽ chỉ là một dòng dài trong bạn web.config)

bạn cần phải thêm connect timeout=x (nơi x là trong vài giây, bất kỳ giá trị lớn hơn 0 là ok) bên trong giá trị provider connection string= của chuỗi kết nối EF của bạn.

+0

Mục 'multipleactiveresultsets' làm gì? Ngoài ra, loại cơ sở dữ liệu nào bạn đang kết nối với app.config này? – bsara

+0

@ Brandon: đây là dành cho SQL Server (2005 hoặc mới hơn). 'Multipleactiveresultsets' là tùy chọn - nó cho phép nhiều kết nối' SqlDataReader' cùng một lúc –

+0

Tôi tình cờ làm việc với Blaine về câu hỏi này và biết rằng anh ta đang đánh máy chủ MS SQL Express 2005 ... điều này có tạo sự khác biệt không tất cả các? – bsara

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