Sql server 执行存储过程时SQL Server超时
我遇到一个问题,执行存储过程更新表中的记录会导致超时错误。我最初从MVC3应用程序中调用存储过程,这是我第一次注意到错误的地方 但是,使用SQL Server Profiler,我能够复制ADO.NET生成的代码,并直接在数据库上运行它。我让这个查询运行了大约5分钟,但它仍然没有返回任何内容 以下是一些事实:Sql server 执行存储过程时SQL Server超时,sql-server,ado.net,timeout,command-timeout,Sql Server,Ado.net,Timeout,Command Timeout,我遇到一个问题,执行存储过程更新表中的记录会导致超时错误。我最初从MVC3应用程序中调用存储过程,这是我第一次注意到错误的地方 但是,使用SQL Server Profiler,我能够复制ADO.NET生成的代码,并直接在数据库上运行它。我让这个查询运行了大约5分钟,但它仍然没有返回任何内容 以下是一些事实: 存储过程大约有100个参数被传递给它 我的MVC应用程序、SSMS和Sql Server 2008都安装在同一台机器上 存储过程尝试更新包含大约5000个条目的表中的一行 有一个触发器将更
LastModifiedDate
和CreatedDate
,但我删除了这些触发器,并更新了EDMX以确定是否存在由这些触发器引起的无限循环另外,不要告诉我更改命令超时属性,我已尝试将其设置为零 我能想到两件事:
谢谢,我现在将研究这些资源。我不知道SQL处理了异常我将死锁图事件添加到SQL Server探查器中,但我没有看到该事件。我有什么遗漏吗?我删除了batch completed和batch started事件类,并添加了死锁图事件。我已经离开存储过程2分钟了,但没有出现任何内容。这是否意味着SQL Server无法检测任何死锁?此外,我刚刚检查了日志,在日志中找不到任何相关条目。您是否首先尝试捕获异常?找到什么了吗?您可以发布一些代码来更好地理解吗?我不能发布,但它是一个相当标准的存储过程。它检查其中一个输入参数的值是否为01/01/1900。如果是,则将参数设置为null。然后检查是否有此客户的任何许可证信息。如果不是,它会将一些许可证信息插入表X中。然后它会继续更新表Y。如果客户的active值不是“Z”,则更新表YI的active字段。表YI与表有相同的问题,其中has column type是hierarchyid。“存储过程有大约100个传递给它的参数。”哦?!?无法想象一个过程在不违反单一责任原则的情况下获得100个参数的情况。如果一个存储过程更新了一个包含100列的表中的行,该情况会怎样?^如果包含100列,我可能会以逗号分隔格式将其作为单个参数发送。