使用VB.Net和SQL
代码
myConnection = New SqlConnection(Connection)
myConnection.Open()
Dim myCommand As SqlCommand = New SqlCommand("proc_g_report", myConnection)
Dim myReader As SqlDataReader = myCommand.ExecuteReader()
DTResults.Load(myReader)
投掷错误为“超时已过期。操作完成前经过的超时时间或服务器未响应”
此行Dim myReader As SqlDataReader = myCommand.ExecuteReader()
由于安全原因,我无法更改数据库池大小,请任何人建议。
答案 0 :(得分:1)
尝试设置CommandTimeout
myConnection = New SqlConnection(Connection)
myConnection.Open()
Dim myCommand As SqlCommand = New SqlCommand("proc_g_report", myConnection)
myCommand.CommandTimeout=0
Dim myReader As SqlDataReader = myCommand.ExecuteReader()
DTResults.Load(myReader)
答案 1 :(得分:1)
错误似乎无关,但是,如果要调用存储过程的执行,则需要告知传递的CommandType是什么。
默认值为CommandType = CommandType.Text
,因此您的命令文本(proc_g_report
)被视为SELECT / INSERT或其他标准T-SQL语句。
您需要设置CommandType并可能在一次性对象周围添加Using Statement ....
Using myConnection = New SqlConnection(Connection)
Using myCommand = New SqlCommand("proc_g_report", myConnection)
myCommand.CommandType = CommandType.StoredProcedure
myConnection.Open()
Using myReader = myCommand.ExecuteReader()
DTResults.Load(myReader)
End Using
End Using
End Using
当然,您可以使用Sql Server Management Studio轻松测试这是否是问题,并从您工作的PC调用该存储过程并检查完成所需的时间。如果时间少于30秒(SqlCommand执行的默认超时),则问题出在其他地方,而不是Timeout值。