C# 数据库调用每分钟冻结5-6秒

C# 数据库调用每分钟冻结5-6秒,c#,sql-server,asp.net-web-api,async-await,connection-pooling,C#,Sql Server,Asp.net Web Api,Async Await,Connection Pooling,每60秒,存储过程中的T-SQL SELECT语句就会出现延迟,我不知道为什么会发生这种情况。我怀疑是配置错误或SQL server错误,但我将此作为一个问题发布给社区,希望有人能解开这个谜团 我有一个名为uspLoadDocument的存储过程,它在用户单击文档列表项时加载文档。正常情况下,该过程响应速度非常快,但平均每60秒它就会挂起5-6秒,然后再继续。正常情况下,没有异常 关于这一延误的事实 它只发生在我的两台开发机器上。在Azure-SQL Server V12的生产环境中不会出现这种

每60秒,存储过程中的T-SQL SELECT语句就会出现延迟,我不知道为什么会发生这种情况。我怀疑是配置错误或SQL server错误,但我将此作为一个问题发布给社区,希望有人能解开这个谜团

我有一个名为uspLoadDocument的存储过程,它在用户单击文档列表项时加载文档。正常情况下,该过程响应速度非常快,但平均每60秒它就会挂起5-6秒,然后再继续。正常情况下,没有异常

关于这一延误的事实

它只发生在我的两台开发机器上。在Azure-SQL Server V12的生产环境中不会出现这种情况 每60秒一次,平均持续5-6秒 没有事务启动,至少不是在我控制的代码中 从SQL Server Management Studio调用存储过程时不会发生延迟 技术资料

Visual Studio Enterprise 2015 24720更新1 Microsoft SQL Server 2014-12.0.4213.0 X64 Express Dapper 1.42.0未使用其他或/或Ms 从WebAPI控制器一直到数据层的C 6.0和异步/等待模式 已启用全文搜索,并在存储过程中挂起的select语句中内部联接的一个表上建立全文索引 SQL事件探查器屏幕转储,显示存储过程中select语句的典型延迟长持续时间。左侧转储显示每60秒发生一次的异常。右侧显示正常执行

我已经试着找出这些延误的原因将近三个星期了,但不知道可能是什么原因。我们高度赞赏能够指出正确方向的线索

可能的解决办法

在我的存储过程中有一个select语句,它从表值函数中进行选择。未使用SCHEMABINDING声明此函数。
将SCHEMABINDING添加到表值函数后,延迟消失了。在我看来,当我不使用SCHEMABINDING时,查询优化器正在进行一些繁重的处理

胡乱猜测,可能您的数据存储非常差,并且速度会随着时间的推移而减慢。无论如何,您应该在服务器上安装并监视连接/查询,因为有许多可能的答案。我遇到这种情况时,静态不是最新的,并且与VM ware关联的驱动器不够健壮。我不久前遇到了类似的问题。然后我才知道,在我的服务器上运行了SET-IMPLICIT_事务。这是位于工具->选项->设置IMPLIIT\u事务中。如果该帮助扫描您对SQL调用的更多注释在SQL事件探查器中冻结,请重试?例如,哪些事件显示了哪些持续时间?如果是存储过程或批处理事件,请添加更多细粒度事件,如SQL:StmtCompleted和SP:StmtCompleted,以查看时间的去向。可能会添加一些其他事件,例如死锁、事务、锁和数据库增长/收缩,然后设置一个持续时间>1000毫秒的筛选器。其他人仍然无法重现此问题,您也没有实际提供任何可操作的内容。我们所能做的就是猜测。运行:sp_blitz、sp_blitzcache、sp_askbrent,向我们展示我刚才列出的那些存储过程的过程、索引以及结果;然后,如果你还没有找到答案,我们很可能会提供帮助。您可以在此处找到这些脚本: