我有一个我必须调用的存储过程,其中包含几个Update语句。
我使用_session.CreateSQLQuery(“exec procName @ param1 =:param1,@ param2 =:param2 ...”)运行它。
我升级了nhibernate(5年后),现在这次超时了,尽管存储过程在SSMS中立即执行。起初我怀疑它是参数嗅探,所以我去了SQL Profiler并抓取所有连接信息并在SSMS连接上设置并运行nhibernate发送到SQL Server的确切查询(execute_sql查询),它立即成功执行。我还尝试在查询计划损坏的情况下清除DB的Proc Cache。
然后我使用ADO.NET执行SP而根本没有与NHibernate的交互并且它成功执行,这让我相信它是某种阻塞/死锁问题,但是探查器没有显示任何死锁/阻塞发生。我正在按请求运行一个事务。
运行NHibernate v4.0.0.4000,SQL Server 2005,ASP.NET MVC 5
在点燃我的头发之前,任何人都有什么想法我应该离开这里?