网络编程
位置:首页>> 网络编程>> 数据库>> 如何由Sybase向SQL Server移植数据库(2)

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

作者:chinaitlab.com  发布时间:2009-01-20 15:56:00 

标签:

除了上面的例子外,兼容性级别的差别还扩展到了保留字。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

游标语法

二种产品中存储过程的创建和执行基本相似,但在移植时,游标语句中的一些例外是我们应当注意的。下面是一个例子:

CREATE PROCEDURE sql_cursor AS

DECLARE @lname char(20), @fname char(20)

DECLARE mycursor CURSOR FOR

SELECT au_lname, au_fname FROM authors

OPEN mycursor

FETCH FROM mycursor INTO @lname, @fname

WHILE @@ FETCH_STATUS = 0

/* Sybase数据库使用@SQLSTATUS而不是@@ FETCH_STATUS */

BEGIN

FETCH FROM mycursor INTO @lname, @fname

/*

** 这里应当是一些业务逻辑

*/

END

CLOSE mycursor

DEALLOCATE /* Sybase数据库在这里需要CURSOR这个词 * / mycursor

Sybase SQL Server

Fetch命令执行成功 0 0

Fetch命令执行失败 1 -2

没有可存取的记录了 2 -1

0
投稿

猜你喜欢

手机版 网络编程 asp之家 www.aspxhome.com