2012-04-23 40 views
6

Tôi đang cố gắng kéo dài thời gian chờ của một SqlDataSource vượt quá 30 giây (Có vẻ là mặc định). Tôi đang cố gắng chạy một thủ tục được lưu trữ phải chạy qua 100.000 bản ghi. Trong thời gian bận rộn nó lần ra ngoài. Tôi đang sử dụng ASP.NET 4.0 và IIS 6.0 trên máy chủ 2003.asp.net C# SqlDataSource vấn đề thời gian chờ

Thông báo lỗi: Hết hạn. Khoảng thời gian chờ trôi qua trước khi hoàn thành thao tác hoặc máy chủ không phản hồi.

tôi đã cố gắng vô ích để kéo dài thời gian chờ:

< asp:SqlDataSource ID="dsTest" EnableCaching="true" CacheDuration="604800" runat="server" ConnectionString="<%$ ConnectionStrings:SuperNARIC %>" SelectCommand="selectStatus" SelectCommandType="StoredProcedure" onselecting="dsTest_Selecting" > 
    <SelectParameters> 
     < asp:ControlParameter ControlID="ddlCar" Name="CountryID" PropertyName="SelectedValue" Type="Int32" /> 
    < /SelectParameters> 
< /asp:SqlDataSource> 



protected void dsTest_Selecting(object sender, SqlDataSourceSelectingEventArgs e) 
    { 
     e.Command.CommandTimeout = 300; 
    } 

Bất kỳ trợ giúp sẽ được đánh giá rất nhiều.

Cảm ơn

Trả lời

3

Thời gian chờ thường được đặt trong chuỗi kết nối của bạn. Xem http://www.connectionstrings.com/ để biết các ví dụ hoàn chỉnh.

+0

1 - Tôi chỉ cơ bản bằng văn bản này. – Tejs

+0

Xin chào, tôi có thông tin sau trong web.config: Thời gian chờ kết nối = 180 – user1024416

0

Kết thúc thời gian chờ/kết thúc Timeout/Timeout Giá trị mặc định - 15 giây Khoảng thời gian (tính bằng giây) để chờ kết nối với máy chủ trước khi chấm dứt nỗ lực và tạo lỗi. Giá trị hợp lệ là lớn hơn hoặc bằng 0 và nhỏ hơn hoặc bằng 2147483647.

string myconstr = "Data Source=(local);Initial Catalog=AdventureWorks;" 
    + "Integrated Security=SSPI;Connection Timeout=30" 

http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlconnection.connectionstring(v=vs.100).aspx

+0

Cảm ơn bạn đã phản hồi nhanh. Tôi có những điều sau đây trong web.config của tôi: Thời gian chờ kết nối = 180 – user1024416

1

Bạn cần phải đảm bảo cả hai CommandTimeout của bạn và ConnectionString 's Connect Timeout của bạn được thiết lập để ngăn chặn thời gian ra vào dài thủ tục lưu trữ -running. Nếu bạn không đặt thời gian chờ kết nối, bạn sẽ hết thời gian chờ trước khi thủ tục được lưu trữ hoàn tất, ngay cả khi lệnh thủ tục đã lưu trữ đã không hết thời gian chờ.

+0

Cảm ơn bạn đã phản hồi nhanh. Tôi có những điều sau đây trong web.config của tôi: Connection Timeout = 180 – user1024416

9

Có hai loại thời gian chờ: ConnectionTimeoutCommandTimeout:

ConnectionTimeout Xác định thời gian tối đa ứng dụng của bạn sẽ chờ đợi để thiết lập kết nối đến máy chủ của bạn.

CommandTimeout: Thời gian tối đa cho phép thực hiện lệnh.

Đảm bảo bạn đặt cả hai. Trong COMAND:

command.CommandTimeout = 300; 

Lưu ý: Điều này có thể được thực hiện trong trường hợp Selecting nên lệnh của bạn là một phần của một DataSource. e.command.CommandTimeout = 0; Giá trị 0 có nghĩa là chờ vô thời hạn.

kết nối chuỗi:

SqlConnectionStringBuilder cs = new SqlConnectionStringBuilder(connectionString); 
cs.ConnectTimeout = 300; 

Hoặc:

<add name="MyConnectionString" connectionString="Data Source=.\SQLEXPRESS; Database=MyDB; Integrated Security=True;Pooling=True;connection timeout=30" providerName="System.Data.SqlClient" /> 

Note: Hãy thử thiết lập thời gian chờ chuỗi kết nối toàn cầu, có lẽ trong tập tin cấu hình của bạn. Giá trị

+0

Xin chào, tôi có những điều sau đây trong web.config của tôi: Thời gian chờ kết nối = 180 – user1024416

+0

Làm mát, bơm đến 500 chỉ cho mục đích thử nghiệm và xem. – Ulises

0

Các kết nối Time Out tối đa có thể 2147483647. Hãy thử thiết lập Connection Timeout giá trị vào chuỗi kết nối của bạn trong web của bạn Config như sau

<connectionStrings> <add name="ConnectionString" connectionString="Data Source=144681;Initial Catalog=Customer;Persist Security Info=True;User ID=xxxxx;Password=yyyyy" providerName="System.Data.SqlClient" /> </connectionStrings>

+1

Và thêm ' 'vào' ' –

-1

Có một thời gian chờ cho cả SQL và phản ứng trang thời gian.

Server.ScriptTimeout = 120; 
e.Command.CommandTimeout = 120; 
5

Như đã đề cập here, điều này đã hiệu quả đối với tôi.

Bạn có thể tăng thuộc tính Timeout như thế này

protected void SqlDataSource1_Selecting(object sender, SqlDataSourceSelectingEventArgs e) 
     { 
      e.Command.CommandTimeout = 0; 
     } 

Thiết timeout 0 có nghĩa là không thời gian chờ

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