asp:SqlDataSource commandtimeout - brak rozwiązań

0

Witam!

Od razu zaznaczam że nie jestem programistą i prosiłbym o wybaczenie mi braków wiedzy w pewnych zakresach.

Z przymusu zostałem zmuszony do poprawienia pewnej aplikacji. Większość rzeczy udało mi się zrobić, natomiast od kilku dni siedzę nad ostatnią rzeczą i nie mogę jej rozwiązać. Pewna funkcja jest wykonywana dłużej niż 30 sekund i wyskakuje błąd. Doczytałem że jest parametr CommandTimeout natomiast jest problem z którym miejscu to umieścić. Przewaliłęm sporo stron z przykładami więc prosiłbym o nie przekierowywanie mnie na google.

W celu ułatwienia załączam wycinek kodu odpowiedzialny za operację:


<asp:SqlDataSource ID="ZwrotkaSqlDataSource1" runat="server"
 ConnectionString="<%$ ConnectionStrings:ZwrotkaConnectionString1 %>"
                        SelectCommand="SELECT wpis_id, data_skanowania,
                        data_odeslania, numer_przesylki, numer_ref,
                        numer_wpisu, acl, nadawca, odbiorca, miasto,
                        magazyn, transport, dok, oddzialy FROM wpisy AS w
                        WHERE (data_skanowania BETWEEN @data1 AND @data2)
                        AND (numer_wpisu = (SELECT MAX(numer_wpisu) AS
                        Expr1 FROM wpisy WHERE (numer_przesylki =
                        w.numer_przesylki)))&#13;&#10;order by
                        numer_przesylki"
                        UpdateCommand="UPDATE wpisy SET dok = @dok WHERE
                        (wpis_id = @wpis_id)">
                                                
                        <UpdateParameters>
                            <asp:Parameter Name="dok" />
                            <asp:ControlParameter
                            ControlID="ZwrotkaMagazynGridView"
                            DefaultValue="@wpis_id"
                                Name="wpis_id" PropertyName="SelectedValue"
                                />
                        </UpdateParameters>
                        <SelectParameters>
                            <asp:ControlParameter ControlID="Kalendarz"
                            Name="data1" PropertyName="SelectedDate" />
                            <asp:ControlParameter ControlID="Kalendarz2"
                            DefaultValue="" Name="data2"
                            PropertyName="SelectedDate" />
                        </SelectParameters>
                                    </asp:SqlDataSource>

Jeżeli chodzi o opcję ConnectionTimeout przy definicji połączenia z bazą to nie ma ona wpływu na działanie.

Pozdrawiam

Artur

0

Zapytanie się długo wykonuje, bo jest skomplikowane. Uwierz mi, można je uprościć. Poza tym 30 s. dla www to naprawdę długo i nie powinno mieć miejsca.
A z tego co pamiętam, to ten parametr (CommandTimeout) ustawia się na obiekcie Connection przed utworzeniem Commanda.

0

Nie chcę zmieniać zbyt wiele, więc opcja ze zmianą zapytania odpada. Jeżeli chodzi o miejsce wstawienia "commandtimeout" to jak wyczytałem wstawia się przy "commandzie". Globalnie podobno nie można tego ustawić, a konfiguracje połączenia mam globalną. Jeżeli chodzi o czas wykonywania to może nawet trwać 10 min, najważniejsze aby się wykonało.

1 użytkowników online, w tym zalogowanych: 0, gości: 1