WEB开发网
开发学院数据库MSSQL Server 由Sybase向SQL Server移植数据库 阅读

由Sybase向SQL Server移植数据库

 2006-08-05 09:16:25 来源:WEB开发网   
核心提示: 在SQL Server中使用下面的代码判断事务模式:IF (@@options & 2) > 0 PRINT onELSE PRINT off下面是可能的返回结果:0 off>0 on隔离水平在一个关系数据库这样的多线程应用软件中,数据库引擎对运行的

在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

退回触发器

SQL Server中不存在这个命令,因此在向SQL Server移植时,使用了ROLLBACK TRIGGER命令的Sybase存储过程必须被进行修改。在修改带有触发器的数据库表中的数据时,使用ROLLBACK TRIGGER命令容易引起误解,一个ROLLBACK TRIGGER命令只退回触发器以及触发触发器的数据修改,如果已经被提交了,则事务的其它部分会继续,被写到数据库中。因此,事务中的所有语句可能没有被成功地完成,但数据已经被提交了。

上一页  1 2 3 4 5  下一页

Tags:Sybase SQL Server

编辑录入:coldstar [复制链接] [打 印]
赞助商链接