0

こんにちは、
vb.net 3.5 Web サイトの sql 2008 データベースからデータをエクスポートするために、このクエリに取り組んでいます。最初のクエリの後に動的 linq を使用して、日付、州、国、専門分野、所属病院に基づいて結果をフィルター処理しています。

これらのフィルターのそれぞれは、クエリで特異値を持ちます。カンマ区切りのリストを持つ病院の所属を除きます。例: OSUMC、西病院、東病院

フィルタリングするときは、.Contains を実行して、カンマ区切りのリストに特定の病院が含まれているかどうかを確認する必要があります。例: (OSUMC, HospitalWest, Hospital East).contains("OSUMC")

Date、State、Country、および Specialty でフィルタを実行すると、クエリは問題なく実行されます。ただし、.Contains() フィルターである病院所属のフィルターを追加すると、タイムアウト エラーが発生します。

Timeout expired.  The timeout period elapsed prior to completion of the operation or the server is not responding.

説明:現在の Web 要求の実行中に未処理の例外が発生しました。エラーの詳細とコード内のどこでエラーが発生したかについては、スタック トレースを確認してください。

例外の詳細: System.Data.SqlClient.SqlException: タイムアウトが発生しました。操作が完了する前にタイムアウト期間が経過したか、サーバーが応答していません。

Dim ctx As New OSUMCEntities
    Dim query = (From ca As OSUMCModel.vw_ConferenceAttendance In ctx.vw_ConferenceAttendance Select New With _
                                                                                                     { _
                                                                                                         .LastName = ca.LastName, _
                                                                                                         .FirstName = ca.FirstName, _
                                                                                                         .UserID = ca.UserID, _
                                                                                                         .UserName = ca.Username, _
                                                                                                         .Degree = ca.DegreeName, _
                                                                                                         .Specialty = ca.Specialty, _
                                                                                                         .Profession = ca.Profession, _
                                                                                                         .HospitalAffiliations = ca.HospitalAffiliations, _
                                                                                                         .Address1 = ca.MailingAddress1, _
                                                                                                         .Address2 = ca.MailingAddress2, _
                                                                                                         .City = ca.MailingCity, _
                                                                                                         .State = ca.MailingState, _
                                                                                                         .ZipPostal = ca.MailingZip, _
                                                                                                         .Country = ca.MailingCountry, _
                                                                                                         .ConferenceID = ca.ConfID, _
                                                                                                         .Title = ca.Title, _
                                                                                                         .Date = ca.StartDate, _
                                                                                                         .MaxCredits = ca.Credits, _
                                                                                                         .CreditsAwarded = ca.CreditHours, _
                                                                                                         .CreditsAssignedOn = ca.AssignedOn, _
                                                                                                         .LastUpdated = ca.LastUpdate _
                                                                                                     })
    If (txtDateStart.Text <> "" And txtDateEnd.Text <> "") Then
        Dim StartDate As Date = txtDateStart.Text
        Dim EndDate As Date = txtDateEnd.Text
        query = query.Where("(Date >= @0 And  Date <=@1)", StartDate, EndDate)
    ElseIf (txtDateStart.Text <> "") Then
        Dim StartDate As Date = txtDateStart.Text
        query = query.Where("Date >= @0", StartDate)
    ElseIf (txtDateEnd.Text <> "") Then
        Dim EndDate As Date = txtDateEnd.Text
        query = query.Where("Date <= @0", EndDate)
    End If
    If (ddlState.SelectedValue <> "Export All") Then
        query = query.Where("State = @0", ddlState.SelectedValue)
    End If
    If (ddlCountry.SelectedValue <> "Export All") Then
        query = query.Where("Country = @0", ddlCountry.SelectedValue)
    End If
    If (ddlSpecialty.SelectedValue <> "Export All") Then
        query = query.Where("Specialty = @0", ddlSpecialty.SelectedValue)
    End If
    If (ddlHospitals.SelectedValue <> "Export All") Then
        Dim Hospital As String = ddlHospitals.SelectedValue
        query = query.Where("HospitalAffiliations.Contains(@0)", Hospital)
    End If
4

1 に答える 1

1

Linq が SQL サーバーで実行するクエリを分析し、SQL プロファイラーで時間を確認します。

于 2010-12-17T23:20:42.150 に答える