#sql #sql-server #vb.net
#sql #sql-сервер #vb.net
Вопрос:
У меня возникает ошибка «Истек срок ожидания» всякий раз, когда я пытаюсь сгенерировать свои отчеты в своей системе. Он говорит: «Истек тайм-аут. Время ожидания истекло до завершения операции или сервер не отвечает. » Что может быть причиной этой проблемы? и какое возможное решение?
У меня есть эти 4 таблицы, и в каждой таблице приведено 16 000 записей ниже. Я предполагаю, что причиной этой ошибки является то, что в таблице 4 слишком много записей. Вот мой запрос:
SELECT * FROM(SELECT A.ItemNo, A.EquipmentID, A.AssetAccountCode, A.Descrip,
B.Condition, B.[Year], C.Brand, c.Model, c.TechnicalSpecs,d.
[Type],d.Criticallity,d.[Status],(CONVERT(VARCHAR(4),d.YearInstalled,127)) as
Yearinstalled FROM tbl_Masterlist A JOIN tbl_Condition B ON A.EquipmentID =
B.EquipmentID JOIN tbl_TechnicalSpecification C ON b.EquipmentID =
c.EquipmentID JOIN tbl_Status D On c.EquipmentID=d.EquipmentID) src PIVOT
(MAX(CONDITION) FOR YEAR IN ([2014], [2015], [2016])) piv
Вот мой код для получения результата:
> Public Sub Read()
> Try
> DS = New DataSet
> DA = New SqlDataAdapter(sql, db)
> DA.Fill(DS, 0)
> Catch ex As Exception
> MsgBox(ex.Message, MsgBoxStyle.Critical)
> End Try
> End Sub
> Private Sub filldgv()
> SQLModCons.sql = "SELECT * FROM(SELECT A.ItemNo, A.EquipmentID, A.AssetAccountCode, A.Descrip, B.Condition, B.[Year],
> C.Brand, c.Model,
> c.TechnicalSpecs,d.[Type],d.Criticallity,d.[Status],(CONVERT(VARCHAR(4),d.YearInstalled,127))
> as Yearinstalled FROM tbl_Masterlist A JOIN tbl_Condition B ON
> A.EquipmentID = B.EquipmentID JOIN tbl_TechnicalSpecification C ON
> b.EquipmentID = c.EquipmentID JOIN tbl_Status D On
> c.EquipmentID=d.EquipmentID) src PIVOT (MAX(CONDITION) FOR YEAR IN (["
> amp; year1 amp; "], [" amp; year2 amp; "], [" amp; year3 amp; "])) piv "
> SQLModCons.Read()
> If Not SQLModCons.DS.Tables.Count = 0 Then
> dgvReports.DataSource = SQLModCons.DS.Tables(0)
> Dim rowc As Integer = dgvReports.RowCount.ToString
> lblCount.Text = rowc
> End If
> End Sub
> Private Sub btnSearch_Click(ByVal sender As System.Object, ByVal e As
> System.EventArgs) Handles btnSearch.Click
> year1 = cbyear1.Text
> year2 = cbyear2.Text
> year3 = cbyear3.Text
> filldgv()
> End Sub
Комментарии:
1. Привет, вы пробовали запускать этот запрос непосредственно к базе данных? У него большой объем данных? Если да, можете ли вы показать этот код о том, как вы извлекаете / вызываете этот запрос?
2. Да, я пробовал запускать его в Management Studio, и это также занимает много времени. В настоящее время я все еще жду, прошло 18 минут.
3. Можете ли вы показать нам свой код для получения результатов?
4. Public Sub Read() Попробуйте DS = New DataSet DA = New SqlDataAdapter(sql, db) DA.Fill(DS, 0) Перехватить ex как исключение MsgBox(например, сообщение, MsgBoxStyle. Критический) End Try End Sub Private Sub btnSearch_Click(отправитель от имени системы. Объект, бывший системным. EventArgs) обрабатывает btnSearch.Щелкните year1 = cbyear1.Text year2 = cbyear2.Text year3 = cbyear3.Text filldgv() End Sub
5. Поскольку это большой набор результатов, попробуйте установить время ожидания в .NET.