从Sybase向SQL Server移植数据库
2007-12-25 15:27:35 来源:WEB开发网这一触发器以一个存储点开始,ROLLBACK TRANSACTION只退回触发逻辑,而不是整个事务(规模要小于Sybases数据库中的ROLLBACK TRIGGER语句。对批命令的修改如下:
BEGIN TRAN
SAVE TRAN save1
INSERT INTO table1 VALUES (1, 1)
IF @@error = 50000
ROLLBACK TRAN save1
SAVE TRAN save2
INSERT INTO table1 VALUES (100, 1)
IF @@error = 50000
ROLLBACK TRAN save2
SAVE TRAN save3
INSERT INTO table1 VALUES (3, 3)
IF @@error = 50000
ROLLBACK TRAN save3
COMMIT TRAN
我们可以发现,改变不可谓不大。由于ROLLBACK TRIGGER命令能够使任何批命令不能成功执行,因此在移植的SQL Server存储过程代码中必须包括另外的逻辑,根据ROLLBACK TRIGGER的使用,这可能是一个艰巨而必要的任务,没有什么捷径可走。如果在移植后所有的ROLLBACK TRIGGER命令被改变为ROLLBACK TRANSACTION,触发器的执行也会发生变化,因此我们应当十分小心。
命令优化
SQL Server能够对SELECT、INSERT、UPDATE和DELETE命令进行优化,Sybase数据库则只支持对SELECT命令进行优化。下面是SQL Server和Sybase在GUI方面的对比:
Sybase SQL Server
使用被称作SHOWPLAN的基于文本的查询分析工具 使用Query Analyzer。
在ISQL中启动SHOWPLAN的命令按钮 多Query Analyzer中启动SHOWPLAN_ALL或 SHOWPLAN_TEXT的命令
SET SHOWPLAN ON SET SHOWPLAN_ALL
GO GO
临时数据库表的名字
表名字的类型 最大长度
SQL Server表名字 128
SQL Server临时表名字 116
Sybase表名字 30
Sybase临时表名字 13
数据类型
数据类型 Sybase SQL Server
char(n) 255 8000
varchar(n) 255 8000
nchar(n) 255 4000
nvarchar(n) 255 4000
binary 255 8000
varbinary 255 8000
注意:
1)SQL Server中的bit类型数据的值可以被设置为0、1或NULL。
2) Sybase中的bit类型数据的值不可以被设置为NULL。
同一性列
Sybase SQL Server
Numeric(x,0) Tinyint,smallint,int,decimal(x,0) or numeric(x,0)
打印语法
在进行移植时,所有使用替换语法的打印语句必须被改变为RAISERROR语句。
结论
将Sybase数据库转换为SQL Server数据库并非是不可能的,但二种产品之间存在许多差异,在转换时需要加以解决。根据应用程序的规模,这种转换可能需要大量的时间。尽管无需重新编写所有的应用程序,但需要完成的工作并不少。
我目前还没有发现这二种数据库间转换的更简单的方法。由于二种产品在许多方面都非常相似,我们非常容易成功地将Sybase数据库转换为SQL Server数据。
- ››sql server自动生成批量执行SQL脚本的批处理
- ››sql server 2008亿万数据性能优化
- ››SQL Server 2008清空数据库日志方法
- ››sqlserver安装和简单的使用
- ››SQL Sever 2008 R2 数据库管理
- ››SQL SERVER无法安装成功,sqlstp.log文件提示[未发...
- ››Sql Server中通过父记录查找出所有关联的子记录
- ››SqlServer触发器、存储过程和函数
- ››SQL Server 中的事务(含义,属性,管理)
- ››Sqlite数据库插入和读取图片数据
- ››Sql server 2005拒绝了对对象 'xx表' (数...
- ››Sql server 2005拒绝了对对象 'xx表' (数...
赞助商链接