• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: | 推荐给好友 上一篇 | 下一篇

如何由Sybase向SQL Server移植数据库

发布: 2008-9-12 14:00 | 作者: 网络转载 | 来源: chinaitlab.com | 查看: 48次 | 进入软件测试论坛讨论

领测软件测试网 最近参与了将一个Sybase数据库移植到Microsoft SQL Server 2000上的项目,我在这一项目上获得的经验,将对Sybase数据库管理员把Sybase数据库移植到SQL Server 2000平台上有一定的帮助。 

尽管二者之间的一些差别是相当大的,例如Sybase数据库管理系统中的存储过程在SQL Server就不能被编译,而其它差别则不太大。在完成这一转换前,对脚本文件和存储过程中编程逻辑的行为和结果进行测试是很有必要的。 

在下面的部分中,我们将讨论这二种数据库系统之间的一些主要的不同点,在移植的规划阶段,我们必须仔细研究这些区别。 

数据兼容模式 

对SQL Server 2000和Sybase之间的一些兼容性差别的一个临时性解决方案是改变SQL Server中的数据库兼容性级别,使之与Sybase相符。为此,我们可以使用sp_dbcmptlevel存储过程。 

下面表中的语句和结果显示出不同版本数据库之间的差别: 

注意: 

1、当兼容性模式被设置为70时,下面的词汇不能被用作对象名和标识符:BACKUP、DENY、PRECENT、RESTORE和TOP。 

2、当兼容性模式被设置为65时,下面的词汇不能被用作对象名和标识符:AUTHORIZATION、CASCASE、CROSS、DISTRIBUTED、ESCAPE、FULL、INNER、JOIN、LEFT、OUTER、PRIVILEGES、RESTRICT、RIGHT、SCHEMA和WORK。 

下面是sp_dbcmptlevel的语法: 


  
  sp_dbcmptlevel [[@dbname=] name][,[@new_cmptlevel=]version]
  
 

@dbname是用于检查和改变兼容性水平的数据库名字。 

@new_cmptlevel决定数据库被设置的兼容性水平(将它设置为70、65、60,缺省值为NULL)。 

例如: 


  sp_dbcmptlevel pubs
  
 

这一行代码返回下面的结果: 


  
  The current compatibility level is 70.(当前的兼容性级别为70。)
  
 

现在我们来看一下另外一个例子: 


  
  sp_dbcmptlevel pubs, 65
  
 

它返回如下的结果: 


  DBCC execution completed. (DBCC执行结束。)
 
 

  
如果DBCC打印出错误信息,则需要与系统管理员联系。我们可以使用rerunsp_dbcmptlevel验证pubs数据库是否修改得正确: 


  
  sp_dbcmptlevel pubs
 
 

  
它返回下面的结果: 


  The current compatibility level is 65(当前的兼容性级别为65。)
  
  除了上面的例子外,兼容性级别的差别还扩展到了保留字。Sybase和SQL Server都有许多不能被用作数据库中对象名字的的保留字,二种产品的保留字相似,但并不完全相同。 

由于能够在Sybase中使用的对象可能不能在SQL Server中使用,这一问题使得由Sybase向SQL Server的移植凭添了许多困难。下面是在SQL Server中是保留字,而在Sybase中不是保留字的词汇清单。 

注意:名字为下列清单中词汇的Sybase数据库中的对象在移植到SQL Server数据库时必须换为其它名字。 


  
  BACKUP COLUMN COMMITTED CONTAINS CONTAINSTABLE
  CROSS CURRENT_DATE CURRENT_TIME CURRENT_TIMESTAMP CURRENT_USER
  DENY DISTRIBUTED FILE FLOPPY FREETEXT
  FREETEXTTABLE FULL IDENTITYCOL INNER JOIN
 
 

  
事务管理模式: 


  Sybase SQL Server
  
  Set chained [ on : off ] Set implicit_transactions [on : off ]
 
 

  
在Sybase中使用下面的代码判断事务模式: 


  
  SELECT @@tranchained
  GO
 
 

  
下面是可能返回的结果: 

0 表明使用的是非链锁式事务模式。 

1 表明连接运行在链锁模式下。 

在SQL Server中使用下面的代码判断事务模式: 


  
  IF (@@options & 2) > 0
  PRINT on
  ELSE
  PRINT off
 

   
下面是可能的返回结果: 


  
  0 off
  >0 on
 
 

  
隔离水平 

在一个关系数据库这样的多线程应用软件中,数据库引擎对运行的进程间的数据是如何被隔离的管理是非常重要的,在表示隔离水平时,Sybase和SQL Server的语法是不同的。下面的表格表明了Sybase和SQL Server在表示隔离水平时的差别。 


  
  Sybase SQL Server
  
  0 READ UNCOMMITTED
  1 READ COMMITTED
  2 REPEATABLE READ
  3 SERIALIZABLE
 

   

延伸阅读

文章来源于领测软件测试网 https://www.ltesting.net/

TAG: server Server SERVER sql SQL Sql Sybase SYBASE sybase 数据库 移植

21/212>

关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备2023014753号-2
技术支持和业务联系:info@testage.com.cn 电话:010-51297073

软件测试 | 领测国际ISTQBISTQB官网TMMiTMMi认证国际软件测试工程师认证领测软件测试网