从 2005 --> 2008 升级我的数据库会使我的应用程序失败吗?

use*_*964 2 sql-server sql-server-2005 sql-server-2008

我们的服务器上有几个数据库。
我们想将这些数据库升级到 sql 2008。
是否有可能某些应用程序功能在 2008 上不起作用而在 2005 上起作用?
有人告诉我 sql 2008 与 2005 100% 向后兼容。

Rem*_*anu 6

没有任何版本的 SQL 是 100% 向后兼容的。对于每个版本,都有一份详细记录的已弃用和停止使用的功能列表,SQL Server 2008 也不例外。该列表发布在SQL Server 数据库引擎向后兼容性。这包含 SQL 2008 不再支持的功能列表,例如:

  • sp_addalias
  • DUMP 和 LOAD 语句
  • 带有 NOLOG 的备份日志/带有 TRUNCATEONLY 的备份日志
  • 备份交易
  • DBCC 一致性违规
  • sp_addgroup/sp_dropgroup/sp_changegroup/sp_helpgroup
  • sp_makewebtask/sp_dropwebtask/sp_runwebtask
  • sp_enumcodepages

此外,任何 SQL Server 功能都不会在没有充分提醒的情况下停止使用。SQL 2008 中停用的所有功能都在 SLQ 2005 中已弃用的功能列表中。您可以使用 SQL Profiler 来监控您的 SQL 2005 应用程序并观察事件:

每次您的应用程序使用 'endagered' 列表中的功能时,第一个事件都会触发。当您使用将在下一个版本中停止使用的功能时,将触发第二个事件。

最后是不推荐使用的功能的 SQL 性能计数器,请参阅我在使用哪些不推荐使用的功能?

select instance_name as [Deprecated Feature]
  , cntr_value as [Frequency Used]
from sys.dm_os_performance_counters
where object_name = 'SQLServer:Deprecated Features'
and cntr_value > 0
order by cntr_value desc
Run Code Online (Sandbox Code Playgroud)

在所有可用的文档和基础设施之间来监控已弃用的功能,您有很多方法可以确定您的应用程序是否正在使用任何已停止使用的功能。

话虽如此,除非您使用 SQL Server 6.0 黑暗时代的功能。您的应用程序可能会在 SQL Server 2008 上运行而不会受到影响。升级的理由有很多,主要是我总是引用页面压缩,这实际上是免费成本的巨大性能提升(我夸大了戏剧性的效果,但只是轻微的)。

您应该继续升级,但要明智地进行:

  • 运行升级顾问,阅读它的建议
  • 有一个测试环境,首先在测试中部署您的应用程序
  • 进行一系列全面的功能测试,以验证您的产品是否仍能像宣传的那样工作。如果您可以衡量测试代码覆盖率,请尝试达到 85-90% 的覆盖率
  • 如果事情失败,请制定退出策略。请记住,升级后的数据库永远不能降级回来。因此,请保留 SQL 2005 数据库文件的安全副本,以防您被迫返回。如果需要,有一个关于如何将升级后的交易应用回 2005 年的技术计划,或者有一个商业计划来解释交易丢失的原因(我不是在开玩笑,这可能是一个完全可以接受的解决方案)。

因此,根据您的数据有多漂亮,您希望应用以上全部、部分或全部。我可能会说,如果你在“所有”船上,你可能不会问这个问题;) 所以上面的一些建议可能适用于你。