SQL Server:如何确定降级数据库时会破坏什么?

时间:2010-08-11 14:30:31

标签: sql-server sql-server-2005 sql-server-2000

我们正在为客户构建一个应用程序,假设他们将从SQL Server 2000升级到最少的SQL Server 2005.我们已经完成了我们的应用程序,建立在2005年,并且已准备好集成。事实证明他们不会升级他们的数据库服务器。

所以,现在我们一直在试图找出会破坏的东西。

我们无权访问SQL Server 2000,因此我们只能将数据库的兼容性更改为80.

除了完整的测试和审查每个存储过程(我已经读过,改变兼容模式不是万无一失的 - 所以测试不会是防弹的),有没有其他方法来确定会破坏什么?有什么工具吗?脚本?

修改

我不想尝试将其恢复到他们的生产数据库服务器上以查看哪些错误被吐出,所以这不是一个好的选择。

2 个答案:

答案 0 :(得分:4)

建议您在线浏览图书,查看两者之间的差异,并查找这些内容。您可以查看列表,然后在存储sp文本的表中搜索一些新关键字。这将为您提供一个开始列表。

@rwmnau注意到一些好的,我还要再加两个 SQL Server 2000没有varchar(max)或nvarchar(max),而是使用文本。 SQl Server 2000也没有SSIS - 如果要创建SSIS包以导入数据或将数据移动到数据仓库或导出数据,则所有这些都需要在DTS中重做。

另外在我看来你仍然可以下载免费版的SQL Server 2000: http://www.microsoft.com/downloads/details.aspx?familyid=413744d1-a0bc-479f-bafa-e4b278eb9147&displaylang=en

您可能希望这样做并对其进行测试。

答案 1 :(得分:2)

我不担心您的ANSI-SQL(设置数据库兼容级别应该处理大部分内容),但是您可能已经使用了一些SQL 2000中没有的大功能(那里还有更多,但这些是我见过的最受欢迎的那些):

此外,虽然您不应该这样,但是直接来自系统表(以“sys”开头的对象或“sys。”模式中的对象)的任何选择可能在SQL 2000和2005+之间发生了显着变化,所以我' d看看你是否选择了以下任何一个:

SELECT *
  FROM syscomments --I know, using a sys table to figure it out :)
 WHERE text like '%sys%'

此外,值得注意的是,虽然可以获得高额费用的扩展支持,但微软已正式结束对SQL 2000的主流支持,并将在不久的将来结束扩展支持。如果出现安全补丁,错误或您发现的任何其他问题,这将使您的客户(和您)没有Microsoft的任何更新。我强烈鼓励他们升级到更新版本(至少2005年),但我怀疑你已经走上了这条道路。