SQL Server 从 2008R2 升级到 SQL Server 2014 后出现超时错误

Hai*_*ssa 3 sql-server-2008 php availability-groups sql-server-2014 timeout

我们的数据库有一个 SQL Server 2008R2 企业版来支持前端应用程序。我们以前从未遇到过超时问题。最近,该公司决定将数据库升级到 SQL Server 2014 企业版,其中 2 个节点始终处于群集设置。新服务器比旧服务器具有更好的 CPU、内存。

升级后我做了所有必要的修改,检查数据库一致性,运行 DBCC UPDATEUSAGE,更新统计信息,重建索引,重新编译存储过程等等。数据库切换和迁移一切顺利。但是,我们的用户开始抱怨超时问题。

我一直在查看不同的文章、博客文章并进行了一些修改,例如更改连接字符串和添加 MultiSubnetFailover = 'True',这似乎有很大帮助并最大限度地减少了超时频率,但问题仍然存在。有谁知道是什么导致了这个问题以及如何解决它?我非常感谢您提出的解决此问题的建议和建议。

And*_*nes 6

基数估计逻辑已针对 SQL Server 2014 更新,这可能是一个原因。您必须使用旧的基数估计器测试相同的查询并比较性能指标。您可以通过将兼容性级别降低到 <120来做到这一点。

我会在测试服务器上而不是在生产中执行所有这些测试。

https://msdn.microsoft.com/en-us/library/dn600374(v=sql.120).aspx https://www.brentozar.com/archive/2014/04/sql-2014-cardinality-estimator-吃坏tsql早餐/

  • 在过去几年中进行了几次 2000/2005/2008 到 2014 年的升级后,我同意 Andy Jones 的观点。检查基数并比较执行计划。您的 2008R2 版本中可能有 T-SQL,这会导致延迟。数据类型、索引提示等可能会在版本升级期间导致问题。 (2认同)

Hai*_*ssa 6

我终于找出问题所在了。经过几天的徘徊后,我检查了 SQL Server 报告,注意到临时数据库上有大量自动增长的情况。问题的原因是,在数据库迁移到新服务器后,系统数据库文件大小未配置,而 tempdb 有办法减少文件大小,使其小于应有的大小。

看起来每当 tempdb 上发生自动增长操作时,查询就会被迫回滚并导致问题。我只是更改文件大小以及文件增长大小。现在它工作起来就像一个魅力,从那以后没有任何问题。