Bla*_*lls 6 c# sql-server stored-procedures
我试图弄清楚为什么存储过程调用在SQL Server express查询窗口中需要几秒钟,但是当我运行时,在代码中调用存储过程查询TIMES OUT.我们正在使用sql server 2008.我知道很难在没有看到存储过程的情况下确切地说明发生了什么.我只是希望这是一个已知的问题.任何指导都非常感谢.
在SQL Server express查询窗口中调用"STORED_PROCEDURE_X"并在2秒内运行的SQL查询:
EXEC STORED_PROCEDURE_X '07/01/2010', '07/31/2010', 0, '', 'true','', 'Top 20'
Run Code Online (Sandbox Code Playgroud)
调用"STORED_PROCEDURE_X"和TIMES OUT的代码:
SqlConnection connSQL = null;
SqlCommand sqlCmd = null;
SqlDataAdapter sqlDataAdpater = null;
DataTable returnData = null;
try
{
returnData = new DataTable();
connSQL = new SqlConnection(sqlConnection);
sqlCmd = new SqlCommand("STORED_PROC_X", connSQL);
if (connSQL.State == ConnectionState.Closed)
{
connSQL.Open();
}
sqlCmd.CommandType = CommandType.StoredProcedure;
sqlCmd.CommandTimeout = 600;
sqlCmd.Parameters.Add("@StartDate", SqlDbType.NVarChar).Value = "07/01/2010";
sqlCmd.Parameters.Add("@EndDate", SqlDbType.NVarChar).Value = "07/31/2010";
sqlCmd.Parameters.Add("@AuditType", SqlDbType.Int).Value = "0";
sqlCmd.Parameters.Add("@SortBy", SqlDbType.NVarChar).Value = "";
sqlCmd.Parameters.Add("@IsClaimDepartment", SqlDbType.NVarChar).Value = "true";
sqlCmd.Parameters.Add("@IdsList", SqlDbType.NVarChar).Value = "";
sqlCmd.Parameters.Add("@ReportType", SqlDbType.NVarChar).Value = "Top 20";
sqlDataAdpater = new SqlDataAdapter(sqlCmd);
sqlDataAdpater.Fill(returnData);
if (connSQL.State == ConnectionState.Open)
{
connSQL.Close();
}
return returnData;
}
catch (Exception ex)
{
LogErrorMessages("ExecuteStoredProcedure", ex.Message);
throw ex;
}
Run Code Online (Sandbox Code Playgroud)
收到的例外情况:
System.Data.SqlClient.SqlException: Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding.
Run Code Online (Sandbox Code Playgroud)
小智 10
因此,运行一个返回30条记录的存储过程在管理控制台中花了我00:00秒,但是当它加载到.net时花了我大约40秒,超过默认的30秒TimeOut.
我只是修改存储过程并重新运行ALTER PROCEDURE代码而不改变任何东西,问题立即得到解决.我没有关于此错误来源的更多详细信息,但至少它是一个非常快速的解决方案
小智 7
总是对我有很大帮助的是将“ with recompile ”选项添加到程序中。
http://technet.microsoft.com/en-us/library/ms190439.aspx