Sybase数据库转储错误

2020-09-24 12:32发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


背景: InfinityQS ProFicient 4.4是一种统计过程控制软件,用于收集我们的制造数据。 InfinityQS ProFicient有2个数据库。 该项目是将2个Sybase数据库(800 MB数据库和2 GB数据库)迁移到SQL。

我们要迁移2个数据库的解决方案是使用InfinityQS数据库管理器的转储和加载功能,该功能是InfinityQS ProFicient软件包的一部分。 转储和加载功能将表作为单独的TXT文件导出到本地驱动器上的特定位置,然后在连接到新数据库后,可以将这些TXT文件加载到数据库中。 我们使用800 MB数据库进行了测试,该方法毫无问题。 通过比较原始的800 MB Sybase数据库和新的800 MB SQL数据库的统计信息,数据库已成功迁移。

问题:在继续进行测试并转储20 GB Sybase数据库时,如图所示发生了错误。 我曾与InfinityQS的工程师以及我们的数据库管理员合作解决此问题,但仍未解决。

观察

-数据库管理器尝试转储新表时发生错误

-TXT文件

empl-inf.txt 是转储失败的示例,请注意," sybfi2_1 "是列名,但TXT文件不包含任何数据(列为空)。 表ENPL-INF在Sybase数据库中包含员工数据信息,因此TXT文件应该也包含数据。

-数据库管理器说" sybfi2_1"是内部Sybase索引,不能由她创建或删除。

我们尝试过的事情:

1。 我们想知道大小是否是问题所在,因此我们测试了一个备份的8 GB数据库,该数据库与大约7-8年前的20 GB数据库相同,并且也给我们带来了同样的问题。

2。 我们试图打开大量日志记录以寻找线索: extended-logging-iiwdblib.txt

我们正在调查的内容:

并非所有表都存在该错误,因此我们正在尝试加载转储到数据库中的任何内容以进行比较。

没什么,我们的耳朵听不见任何建议。

(20.4 kB)

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


背景: InfinityQS ProFicient 4.4是一种统计过程控制软件,用于收集我们的制造数据。 InfinityQS ProFicient有2个数据库。 该项目是将2个Sybase数据库(800 MB数据库和2 GB数据库)迁移到SQL。

我们要迁移2个数据库的解决方案是使用InfinityQS数据库管理器的转储和加载功能,该功能是InfinityQS ProFicient软件包的一部分。 转储和加载功能将表作为单独的TXT文件导出到本地驱动器上的特定位置,然后在连接到新数据库后,可以将这些TXT文件加载到数据库中。 我们使用800 MB数据库进行了测试,该方法毫无问题。 通过比较原始的800 MB Sybase数据库和新的800 MB SQL数据库的统计信息,数据库已成功迁移。

问题:在继续进行测试并转储20 GB Sybase数据库时,如图所示发生了错误。 我曾与InfinityQS的工程师以及我们的数据库管理员合作解决此问题,但仍未解决。

观察

-数据库管理器尝试转储新表时发生错误

-TXT文件

empl-inf.txt 是转储失败的示例,请注意," sybfi2_1 "是列名,但TXT文件不包含任何数据(列为空)。 表ENPL-INF在Sybase数据库中包含员工数据信息,因此TXT文件应该也包含数据。

-数据库管理器说" sybfi2_1"是内部Sybase索引,不能由她创建或删除。

我们尝试过的事情:

1。 我们想知道大小是否是问题所在,因此我们测试了一个备份的8 GB数据库,该数据库与大约7-8年前的20 GB数据库相同,并且也给我们带来了同样的问题。

2。 我们试图打开大量日志记录以寻找线索: extended-logging-iiwdblib.txt

我们正在调查的内容:

并非所有表都存在该错误,因此我们正在尝试加载转储到数据库中的任何内容以进行比较。

没什么,我们的耳朵听不见任何建议。

(20.4 kB)
1条回答
昵称总是被占用
1楼-- · 2020-09-24 13:09

目前我没有一个ASE实例,但是我似乎想起了在表上创建基于函数的索引时ASE自动创建的" sybfi2_1"列,例如:

在mytable(col1 * col2)上创建索引idx_mult 

由于(ASE)索引是基于实际数据构建的,因此ASE要做的是更改表并添加一个物化的计算列,用数据填充该列,然后在此新列上构建索引。

由于'create index'命令没有提供用于命名计算列的方法,因此ASE将自动为该列生成一个名称,例如'sybfi2_1'。

如果这描述了您的系统,则'sp_help '的输出应显示:

  • " sybfi2_1"作为表格中的列
  • " sybfi2_1"作为表的索引之一中的列

-------------------

虽然表所有者可以显式地将计算列添加到表中...并且可以查询所述列...但是我不记得是否可以查询为支持基于函数的索引而创建的计算列(我 我倾向于"不可能"。

如果是这种情况(即无法直接查询'sybfi2_1'),则可能解释了您收到的错误,即此迁移工具正在尝试从此列中进行选择或以其他方式引用

如果是这种情况,则需要对工具进行配置(重新编码?)以跳过显式访问列的操作; 当然,在某些时候,某人/某事将需要确保在SQLServer中创建基于函数的索引(及其基础计算列)……或在SQLServer中调用任何等效功能。

一周热门 更多>