No estoy seguro de si esto es un error de VB.NET o SQL Server. Pero consigo el error anterior con el seguimiento de pila:Tiempo de espera caducado. El período de tiempo de espera transcurrido antes de la finalización de la operación o el servidor no responde
[SqlException (0x80131904): Tiempo de espera expiró. El período de tiempo de espera transcurrido antes de la finalización de la operación o el servidor no está respondiendo.]
System.Data.SqlClient.SqlConnection.OnError (SqlException excepción, Boolean breakConnection) 1.950.890 System.Data.SqlClient.SqlInternalConnection. OnError (SqlException excepción, Boolean breakConnection) 4.846.875 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, Cuerda resetOptionsString) +297
System.Data.SqlClient.SqlCommand.RunExecuteReaderTds (CommandBehavior cmdBehavior, runBehavior runBehavior, Boolean returnStream, async Boolean) 954 System.Data.SqlClient.SqlCommand.RunExecuteReader (CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, método String, resultado DbAsyncResult) 162
System.Data.SqlClient.SqlCommand.RunExecuteReader (CommandBehavior cmdBehavior, runBehavior RunBehavior, Boolean returnStream, método String) 32 System.Data.SqlClient.SqlCommand.ExecuteReader ( comportamiento, método de String CommandBehavior) 141
System.Data.SqlClient.SqlCommand.ExecuteDbDataReader (CommandBehavior comportamiento) 12
System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader (CommandBehavior comportamiento) +10
System.Data.Common.DbDataAdapter.FillInternal (Datos Establecer conjunto de datos, DataTable [] tablas de datos, Int32 startRecord, Int32 maxRecords, Cadena srcTable, comando IDbCommand, comportamiento CommandBehavior) 130
System.Data.Common.DbDataAdapter.Fill (conjunto de datos conjunto de datos, Int32 startRecord, Int32 maxRecords, cadena srcTable, comando IDbCommand, CommandBehavior comportamiento) 287
System.Data.Common.DbDataAdapter.Fill (conjunto de datos dataSet) 94
GlobalFunctions.GlobalF.GetComplaintTrendingList6 (DateTime primermes, DateTime lastMonth, Int32 rowLeve l) 489
ASP.website_complaints_complainttrendinglist6_aspx.Main() en e: \ inetpub \ amdmetrics-d.web.abbott.com \ wwwroot \ sitio web \ \ Quejas ComplaintTrendingList6.aspx: 94 ASP.website_complaints_complainttrendinglist6_aspx.Load (Objeto remitente, EventArgs e) en e: \ inetpub \ amdmetrics-d.web.abbott.com \ wwwroot \ sitio web \ \ Quejas ComplaintTrendingList6.aspx: 60 System.Web.Util.CalliHelper.EventArgFunctionCaller (IntPtr fp, o de objetos, objetos t, EventArgs e) 14 System.Web.Util.CalliEventHandlerDelegateProxy.Callback (objeto remitente, EventArgs e) 35
System.Web.UI.Control.OnLoad (EventArgs e) + 99
System.Web.UI.Control.LoadRecursive() 50 System.Web.UI.Page.ProcessRequestMain (Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) 627
Este es el Microsoft .NET Framework Versión: 2.0.50727.3620; ASP.NET Versión: 2.0.50727.3618 y SQL Server 2008. La línea lo marca causando este error dice:
1: PrintMessageGrid.DataSource = GlobalFunctions.GlobalF.GetComplaintTrendingList6(FirstMonthDate, LastMonthDate, TheLevel)
Aunque puedo ejecutar este procedimiento almacenado en el Analizador de consultas y se devuelve en 8 segundos. ¿Cuál podría ser la causa y la solución?
Aquí hay más detalles en donde declaro esta función:
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
Lo extraño es que si hago este pequeño cambio en mi procedimiento almacenado, que pasa, pero no me da los datos que yo quiero: no hay error, pero esta versión no me da lo que quiero:
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
causa de errores procedimiento almacenado:
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
Rob, si este proceso almacenado solo tomó 8 segundos para ejecutarse en QA, ¿cree que se agotaría el tiempo de espera con la configuración de tiempo de espera predeterminada? – salvationishere