问题: 使用从SQL 2000 SP4实例分离/附加SQL数据库到更强大的SQL 2005 SP2服务器。
运行reindex,重新组织和更新统计信息几次,但没有任何成功。
SQL 2000上的查询大约需要1-2秒。要完成,现在相同的查询需要2-3分钟的SQL 2005(甚至2008年 - 在那里测试它。)
已查看每个服务器上的执行计划和总体匹配百分比或相似。
答案 0 :(得分:0)
您需要返回2000服务器,运行完整备份,然后将其恢复到2005年。
答案 1 :(得分:0)
没有关于架构的任何信息,查询或表的大小我们真的无法猜测任何东西。如果你可以在2005年和2000年发布SET STATISTICS TIME ON
和SET STATISTICS IO ON
的输出,我们可以开始讨论......
一旦数据库在2005系统上联机,数据库从2000年升级到2005年就会发生,无论实际操作(恢复,附加)都是一样的。
答案 2 :(得分:0)
我还会研究在两台服务器上的连接上设置的选项。这可能会导致性能问题,因为这些细节会影响查询计划的重用。在两台服务器上运行Profiler跟踪并比较现有连接详细信息。例如,使用与其他语言不同的语言的登录名不能使用相同的查询计划。在线书籍中有关于哪些选项会影响这一点的内容。
答案 3 :(得分:0)
为了跟进这一点,我们的“解决方案”是与SQL 2005一起安装的SQL2000实例。
我们还尝试将SQL 2000数据库附加到运行SQL 2008的其他服务器上,与SQL 2005的结果完全相同: - (
就连接,硬件,IO和那种问题而言,SQL2000实例在与SQL 2005相同的服务器上运行完美。我猜这会排除硬件问题吗?
答案 4 :(得分:0)
几年前,我有一个客户端在应用程序中遇到了一些性能问题。我的一位同事和我在他们的临时环境中将表现不佳的数据库实例隔离为原因之一。
他们的生产环境使用的是一个Sql Server 2000实例,其数据库已经存在了4年或5年;他们的临时数据库服务器正在运行Sql Server 2005,在该服务器上恢复了其生产数据库的备份。我们的测试显示,登台服务器的性能始终低于生产。
我们通过在新计算机上安装Sql Server 2000和2005的实例并将同一备份还原到两者来消除硬件差异。在验证了新机器上的实例之间存在类似的性能差异之后,我们执行了一致性检查并重建了索引以使其无效。我们发现在2005实例中使用相同的模式创建新数据库并仅迁移数据消除了性能差异。根据具体情况,我们认为没有必要进一步追究这个问题。