Я не уверен, что это ошибка VB.NET или SQL Server. Но я получаю вышеуказанную ошибку со следующей трассировкой стека:
[SqlException (0x80131904): время ожидания
истекший. Истек срок ожидания
до завершения операции
или сервер не отвечает.]
System.Data.SqlClient.SqlConnection.OnError (SqlException
исключение, Boolean breakConnection)
+1950890 System.Data.SqlClient.SqlInternalConnection.OnError (SqlException
исключение, Boolean breakConnection)
+4846875 System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning (TdsParserStateObject
stateObj) + 194
System.Data.SqlClient.TdsParser.Run (RunBehavior
runBehavior, SqlCommand cmdHandler,
SqlDataReader dataStream,
BulkCopySimpleResultSet
bulkCopyHandler, TdsParserStateObject
stateObj) + 2392
System.Data.SqlClient.SqlDataReader.ConsumeMetaData ()
+33 System.Data.SqlClient.SqlDataReader.get_MetaData ()
+83 System.Data.SqlClient.SqlCommand.FinishExecuteReader (SqlDataReader
ds, RunBehavior, runBehavior, String
resetOptionsString) + 297
System.Data.SqlClient.SqlCommand.RunExecuteReaderTds (CommandBehavior
cmdBehavior, RunBehavior runBehavior,
Boolean returnStream, Boolean async)
+954 System.Data.SqlClient.SqlCommand.RunExecuteReader (CommandBehavior
cmdBehavior, RunBehavior runBehavior,
Boolean returnStream, метод String,
Результат DbAsyncResult) + 162
System.Data.SqlClient.SqlCommand.RunExecuteReader (CommandBehavior
cmdBehavior, RunBehavior runBehavior,
Boolean returnStream, метод String)
+32 System.Data.SqlClient.SqlCommand.ExecuteReader (CommandBehavior
поведение, метод String) + 141
System.Data.SqlClient.SqlCommand.ExecuteDbDataReader (CommandBehavior
поведение) + 12
System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader (CommandBehavior
поведение) + 10
System.Data.Common.DbDataAdapter.FillInternal (DataSet
набор данных, DataTable [] datatables, Int32
startRecord, Int32 maxRecords, строка
srcTable, команда IDbCommand,
Поведение CommandBehavior) + 130
System.Data.Common.DbDataAdapter.Fill (DataSet
dataSet, Int32 startRecord, Int32
maxRecords, String srcTable,
Команда IDbCommand, CommandBehavior
поведение) + 287
System.Data.Common.DbDataAdapter.Fill (DataSet
набор данных) + 94
GlobalFunctions.GlobalF.GetComplaintTrendingList6 (DateTime
FirstMonth, DateTime LastMonth, Int32
rowLevel) + 489
ASP.website_complaints_complainttrendinglist6_aspx.Main ()
в
е: \ Inetpub \ amdmetrics-d.web.abbott.com \ Wwwroot \ Сайт \ Жалобы \ ComplaintTrendingList6.aspx: 94
ASP.website_complaints_complainttrendinglist6_aspx.Page_Load (Объект
Отправитель, EventArgs E) в
е: \ Inetpub \ amdmetrics-d.web.abbott.com \ Wwwroot \ Сайт \ Жалобы \ ComplaintTrendingList6.aspx: 60
System.Web.Util.CalliHelper.EventArgFunctionCaller (IntPtr
fp, объект o, объект t, EventArgs e)
+14 System.Web.Util.CalliEventHandlerDelegateProxy.Callback (Object
отправитель, EventArgs e) + 35
System.Web.UI.Control.OnLoad (EventArgs
д) + 99
System.Web.UI.Control.LoadRecursive ()
+50 System.Web.UI.Page.ProcessRequestMain (Boolean
includeStagesBeforeAsyncPoint, Boolean
includeStagesAfterAsyncPoint) + 627
Это на Microsoft .NET Framework Версия: 2.0.50727.3620; ASP.NET версия: 2.0.50727.3618 и SQL Server 2008.
Строка, которую он помечает, вызывая эту ошибку, говорит:
1: PrintMessageGrid.DataSource = GlobalFunctions.GlobalF.GetComplaintTrendingList6(FirstMonthDate, LastMonthDate, TheLevel)
Хотя я могу запустить эту хранимую процедуру в Query Analyzer, и она возвращается через 8 секунд. Что может быть причиной и исправить?
Вот более подробно, где я объявляю эту функцию:
Public Shared Function GetComplaintTrendingList6(ByVal FirstMonth As DateTime, ByVal LastMonth As DateTime, ByVal rowLevel As Integer) As DataSet
Dim DSPageData As New System.Data.DataSet
Dim param(2) As SqlClient.SqlParameter
param(0) = New SqlParameter("@FirstMonthDate", SqlDbType.DateTime)
param(0).Value = FirstMonth
param(1) = New SqlParameter("@LastMonthDate", SqlDbType.DateTime)
param(1).Value = LastMonth
param(2) = New SqlParameter("@TheLevel", SqlDbType.Int)
param(2).Value = rowLevel
''# A Using block will ensure the .Dispose() method is called for these variables, even if an exception is thrown
''# This is IMPORTANT - not disposing your connections properly can result in an unrespsonsive database
Using conn As New SQLConnection(ConfigurationSettings.AppSettings("AMDMetricsDevConnectionString")), _
cmd As New SQLCommand("ComplaintTrendingList6", conn), _
da As New SQLDataAdapter(cmd)
cmd.CommandType = CommandType.StoredProcedure
cmd.Parameters.AddRange(param)
da.Fill(DSPageData)
End Using
Return DSPageData
End Function
Странно, что если я внесу небольшое изменение в свой сохраненный процесс, он пройдет, но не даст мне данных, которые я хочу:
Нет ошибок, но эта версия не дает мне то, что я хочу:
SELECT E.PRODUCT_GROUP, a.QXP_SHORT_DESC, COUNT(DISTINCT A.QXP_EXCEPTION_NO), A.QXP_REPORT_DATE, DATEADD(M, DATEDIFF(M, 0, A.QXP_REPORT_DATE), 0) AS STARTDATE
FROM ALL_COMPLAINTS A
LEFT OUTER JOIN SMARTSOLVE.V_QXP_ISSUE_REF D ON A.QXP_ID = D.IRF_QXP_ID
INNER JOIN CT_ProductFailures b ON b.old_modes = a.qxp_short_desc
LEFT OUTER JOIN [MANUAL].PRODUCTS E ON A.EPA_PRD_CODE = E.LIST_NUMBER
LEFT JOIN SMARTSOLVE.V_CXP_CUSTOMER_PXP C ON A.QXP_ID = C.QXP_ID
INNER JOIN @SelectedLevels F ON A.[LEVEL] = F.LevelId
WHERE --[LEVEL] > 0 AND
(A.QXP_SHORT_DESC <> 'Design Control')
and A.QXP_REPORT_DATE >= @OneYearAgo AND A.QXP_REPORT_DATE <= @LastMonthDate
AND (C.QXP_EXCEPTION_TYPE <> 'Non-Diagnostic' OR C.QXP_EXCEPTION_TYPE IS NULL)
GROUP BY E.PRODUCT_GROUP, A.QXP_REPORT_DATE, A.QXP_SHORT_DESC
Ошибка сохраняемого процесса:
INSERT #PVAL_NUM
SELECT E.PRODUCT_GROUP, b.new_modes 'QXP_SHORT_DESC', COUNT(DISTINCT A.QXP_EXCEPTION_NO), A.QXP_REPORT_DATE, DATEADD(M, DATEDIFF(M, 0, A.QXP_REPORT_DATE), 0) AS STARTDATE
FROM ALL_COMPLAINTS A
LEFT OUTER JOIN SMARTSOLVE.V_QXP_ISSUE_REF D ON A.QXP_ID = D.IRF_QXP_ID
INNER JOIN CT_ProductFailures b ON b.old_modes = a.qxp_short_desc
LEFT OUTER JOIN [MANUAL].PRODUCTS E ON A.EPA_PRD_CODE = E.LIST_NUMBER
LEFT JOIN SMARTSOLVE.V_CXP_CUSTOMER_PXP C ON A.QXP_ID = C.QXP_ID
INNER JOIN @SelectedLevels F ON A.[LEVEL] = F.LevelId
WHERE --[LEVEL] > 0 AND
(A.QXP_SHORT_DESC <> 'Design Control')
and A.QXP_REPORT_DATE >= @OneYearAgo AND A.QXP_REPORT_DATE <= @LastMonthDate
AND (C.QXP_EXCEPTION_TYPE <> 'Non-Diagnostic' OR C.QXP_EXCEPTION_TYPE IS NULL)
GROUP BY E.PRODUCT_GROUP, A.QXP_REPORT_DATE, b.new_modes