当前位置: 首页 > 知识库问答 >
问题:

使用Postgreql Bableish将赛贝斯应用程序连接到Aurora Postgreql

巢烨
2023-03-14

我有一个大型Sybase ASE C/C应用程序,我想将其迁移到Postgresql。应用程序使用的是Sybase CT库(没有什么复杂的:简单的SQL,很少批量上传等)。应用程序是使用SYBASE OCS-16在Linux上构建和运行的。

我正在尝试评估BabelFish扩展是否有助于加快迁移。

第一个挑战(从Sybsae迁移)是应用程序广泛使用多语句查询来返回多结果集,使用动态生成的Transact-SQL。在少数情况下,多语句查询在后续调用中使用占位符。例如:(这不是真正的代码,但它类似于模式)

declare @a int
select @a = ?
select foo,  bar from table1 where key = @a
select x, y from table2 where key = @a and date = ?
...

快速检查显示,Microsoft T-SQL支持所有这些构造。

第二个挑战是赛贝斯CT应用编程接口。我认为最好的方法是使用openTDS,它提供与赛贝斯相同的应用编程接口,并将其配置为使用巴贝尔鱼支持的TDS 7. X。

基本上:(我的申请)—

我的问题:

  • 有人为Sybsa-尝试过这种方法吗?

在这个项目中,可以对应用程序进行小的修改(如果需要的话,还可以对freeTDS进行小的修改),但是不可能修改所有发出ct调用的代码——模块太多——太耗时——实际上这不是一个选项。

共有1个答案

方飞翼
2023-03-14

来自Sybase,写过关于ASE的书……ASE T-SQL和MSSQL T-SQL确实有很多相似之处,所以从这个角度来看,事情可能会成功。然而,也有许多令人讨厌的小差异。随便列举几个方面:空字符串(ASE中只有一个空格,在MSSQL中实际上是空的)、与NULL的字符串连接(MSSQL已经脱离了Sybase的默认设置)、T-SQL OJ语法(MSSQL不再支持,Babelfish也不支持);某些BIF在某些情况下的不同行为(SUBSTRING(),SPACE()),SQL Server没有的BIF,RAISERROR和PRINT的不同语法,CREATE TYPE/sp_addtype差异,@@FETCH_STATUS,提示的不同语法、ROLLBACK TRIGGER,扩展的GROUP-by语法。然后还有诸如CREATEDATABASE/ALTERDATABASE选项、QUIESCEDATABASE、复制、分区等不同的东西。至于连接:FreeTDS可能会起作用,但从Babelfish的角度来看,这实际上是不受支持的。总之:您的里程可能会有所不同。在语法和语义上都会存在差异,这些差异可能会影响您的迁移,因此,尽管某些部分可能会起作用,但您可能需要在Babelfish接受ASE SQL代码之前对其进行修补。

 类似资料:
  • 我是Sybase数据库的新手,尝试使用Java JDBC连接和sajdbc4连接到Sybase。jar,但得到一个错误: JAVAsql。SQLException:[Sybase][JDBC驱动程序][SQL Anywhere]未找到数据库服务器 这是我的连接字符串:

  • Support for the Sybase database. The following table summarizes current support levels for database release versions. 数据库接口支持 The following dialect/DBAPI options are available. Please refer to individ

  • 全部的 这个标题几乎说明了一切。我在这里查看,但找不到任何有关模式的信息。 有人能帮我照个灯吗? 我知道MS SQL Server使用“schema.name”来引用数据库中的表,但对于Sybase我不确定。 蒂娅! 编辑: 我想我应该更具体一点。 我知道在MS SQL Server中可以修改表所有者,但您仍然可以通过“从sysobjects so、sysusers su、sys.tables t

  • 我想生成从0到9000000的数字。在Oracle中,我可以使用下面的代码。如何在赛贝斯ASE中做到这一点? 这是在甲骨文中: 如何在Sybase ASE中实现这一点? 我不能创建一个表并添加一个标识,因为我需要从1到9000000的数字,所以一个表会很复杂。有查询可以做到这一点吗?

  • 我目前正在进行一个项目,我们将数据存储在Azure Datalake上。Datalake与Azure Databricks挂钩。 该要求要求 Azure 数据砖连接到 C# 应用程序,以便能够运行查询并从 C# 应用程序获取全部结果。我们目前解决这个问题的方式是,我们已经在Databricks上创建了一个工作区,其中包含许多需要执行的查询。我们创建了一个链接到上述工作区的作业。从 C# 应用程序中