軟件測試中由Sybase向SQL Server移植數據庫

發表于:2010-06-23來源:作者:點擊數: 標簽:軟件測試數據庫sqlSqlSQL
軟件測試中由Sybase向SQL Server移植 數據庫 簡介 我最近參與了將一個Sybase數據庫移植到Microsoft SQL Server 2000上的項目,我在這一項目上獲得的經驗,將對Sybase數據庫管理員把Sybase數據庫移植到SQL Server 2000平臺上有一定的幫助。 盡管二者之間的一

軟件測試中由Sybase向SQL Server移植數據庫

簡介

  我最近參與了將一個Sybase數據庫移植到Microsoft SQL Server 2000上的項目,我在這一項目上獲得的經驗,將對Sybase數據庫管理員把Sybase數據庫移植到SQL Server 2000平臺上有一定的幫助。

  盡管二者之間的一些差別是相當大的,例如Sybase數據庫管理系統中的存儲過程在SQL Server就不能被編譯,而其它差別則不太大。在完成這一轉換前,對腳本文件和存儲過程中編程邏輯的行為和結果進行測試是很有必要的。

  在下面的部分中,我們將討論這二種數據庫系統之間的一些主要的不同點,在移植的規劃階段,我們必須仔細研究這些區別。
  數據兼容模式

  對SQL Server 2000和Sybase之間的一些兼容性差別的一個臨時性解決方案是改變SQL Server中的數據庫兼容性級別,使之與Sybase相符。為此,我們可以使用sp_dbcmptlevel存儲過程。
下面表中的語句和結果顯示出不同版本數據庫之間的差別:
(Untitled-1)

  注意:

  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

  

原文轉自:http://www.anti-gravitydesign.com

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97