当前位置: 首页 > 图文教程 > 数据库 > MSSQL > 从SQL Server2000升级到2005的过程解析

MSSQL
mssql 两种数据插入方式
mssql @@ERROR 使用
sqlserver 数据库日志备份和恢复步骤
SQL Server日志过大会影响查询结果
SQLserver 实现分组统计查询(按月、小时分组)
SQL语句查询是否为空 =null及null
对有insert触发器表取IDENTITY值时发现的问题
SQL SERVER 查询正在实行的SQL语句
sql 随机抽取几条数据的方法 推荐
sql 多条件组合查询,并根据指定类别找出所有最小子类别的SQL语句备忘
Java 实现连接sql server 2000
SQL Server 不存在或访问被拒绝(转)
分页查询 效率最高
sqlserver 系统存储过程 中文说明
sql 多表连接查询
SQL SERVER 自增列
丢失的数据忘记备份的处理方法[图文]
SqlServer 序号列的实现方法
MsSql 存储过程分页代码 [收集多篇]
SQLServer 数据库中如何保持数据一致性

MSSQL 中的 从SQL Server2000升级到2005的过程解析


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-17   浏览: 150 ::
收藏到网摘: n/a

如果你计划将数据库从SQL Server 2000 升级到 SQL Server 2005。你在升级之前一定会测试每样东西,并且证明应用程序是稳定的。即使这样,如果升级之后发生任何问题的话,你仍然会想要确保你仍然可以回退到原来的环境中去,并且保证不丢失任何的数据修改。

这篇文章列出了保持原有数据(SQL Server 2000)中数据最新,直到新的环境被证明是最棒的方法。

保持原有SQL Server环境最新的方法:

在SQL Server中,有一些方法可以用来复制数据修改到另外一个数据库中去:

1、日志传送

2、拷贝数据库任务

3、复制(事务,快照)

4、SQL 追踪

5、编程(触发器、DTS,BCP等)

6、第三方工具

下面我们来讨论其中的三种方法:

1:日志传送

我们可以在SQL Server 2005数据库(主数据库)和SQL Server 2000数据库(从数据库)之间传送日志吗?

我努力在因特网上寻找这个问题的积极答案,但是很不走运。然后我试图自己创造性地寻找一种解决方法,使用产品自带的标准工具。也没有门,天啊……我只能在第二个数据库中使用WITH NORECOVERY将日志从SQL Server 2000 传送到SQL Server 2005,没有其他办法。所以,答案是“没有”,使用日志传送是不现实的。

2:拷贝数据库

不幸的是,当开启拷贝数据库向导的时候,当源和目标版本不同的时候,你就会收到错误信息,不能继续下去。

3:复制

事务复制

事务复制是在两个版本之间工作的。这个解决方案有两个问题:

有一些SQL Server的版本不能作为PRIMARY 或者DISTRIBUTOR参加复制模型,《SQL Server 2005 Features Comparison》一书中对此有详细描述。

没有定义Unique键的表不能参加这个模型。

快照复制

这个解决方案有效,但是也有几项例外。例如,如果表中有用户自定义数据类型,并且必须在表被创建之前创建,那么由于在SQL Server2000没有CREATE TYPE这个命令,就会失败。

4:SQL 追踪

用SQL Server Profiler 或者SQL Trace可以捕捉到工作量,并且导出到 SQL 脚本中。脚本可以在从数据库中再次运行。

这个解决方案存在的问题包括:

4.1:执行的命令是有一定顺序的。如果一个事务在一个单独的执行中被打开或者关闭了,而这个操作不是这一系列命令中的一个,那么脚本就无法使其发生关系,因为“会话”无法被Traces识别了。

4.2:如果在两个版本之间,命令语法有区别,那么在从数据库中的执行一定会失败。

5:编程

如果你有一小批数据库要移植,那么你可能会考虑编写一个数据库组件来传输数据的修改。

示例:

· 使用触发器——这可能会影响性能,因为触发器是事务的一部分。

· 使用DTS或者BCP来传输数据——这种方法在很大程度上依赖数据量的大小。

6:第三方工具:

你可以使用第三方工具,例如Log Readers来从事务日志、脚本中读取SQL 命令,然后在从数据库中执行它们。还有,虽然我无法自己找到这样的一个工具,但是在SQL Server 2005中肯定会有一个工具能够备份事务日志,并且在SQL Server2000中顺利地重新存储它们。

其它

你还可以创新……

例如,在某些情况下,你可以将日志传送到从SQL Server 2005数据库中,把它的兼容级别改为80,然后备份并重新存储到第三个数据库中去。

结论

对于关键的数据库,保留要升级的数据库的旧的版本,以及最新的数据修改,以便在需要回滚的时候用到,确实是个好主意。

但是……任何事物都没有“最好的解决方法”。你必须分析你的数据库特点和结构,然后决定针对你的需求的最佳解决方法。就我个人来说,我倾向于认为复制是最快最可靠的解决方法。