數據兼容模式
對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 表明連接運行在鏈鎖模式下