从SQL Server与Informix进行通信

时间:2010-10-22 15:23:06

标签: sql sql-server sql-server-2000 informix

是的......我有一个程序,我正在做一些维护。

Urgh。即使描述它也让我不寒而栗......好吧,好吧。

每天晚上,运行在我们认为的SQL Server 2000上的数据库连接到Informix数据库并将其复制到SQL Server中。

Informix / SQL数据由我正在维护的程序访问,然后将一些数据存储在不同的SQL Server 2000数据库中。此数据应该对Informix数据具有外键约束,但不会。

接下来,来自SQL数据库的数据被放回到Informix / SQL数据库中,稍后又回到实际的Informix数据库中。

基本上,我的问题的 root 是非Informix SQL数据库上没有外键或主键约束。好吧,有些表在一个没有意义的“ID”列上有一个主键,但那些表没有FK到任何其他表。

我的问题是:Is it possible to link SQL Server 2000 to the native Informix database in some way, so that I can add foreign key constraints within the SQL database so that SQL Server can only create rows when it can refer to existing rows within the Informix database?

我会尽力回答任何人提出的任何问题,但据我所知,这些设计决定背后的理由是真正的疯狂,所以理由不会特别明显,因为我无法解决,我自己......

1 个答案:

答案 0 :(得分:1)

  • 呸!
  • 糟糕的运气(关于你继承的烂摊子)!
  • 祝你好运(修好你的工作)!

Informix的哪个版本,以及它运行的平台(机器类型,o / s)?

是否有一个原因(除了它会因为数据混乱而中断),您无法更新Informix架构以强制实际的RI约束。但是你可能需要知道这个混乱有多糟糕,以便你可以开始清理过程。 IDS(Informix Dynamic Server)确实有“违规表”,可用于跟踪有问题的数据行 - “START VIOLATIONS”和“STOP VIOLATIONS”是Informix SQL指南中要查找的语句:语法手册你可能会很好在开始加载启用了违规检查的数据之前,需要从一个表中卸载和删除数据。


在澄清之后,问题似乎是“我是否可以在SQL Server数据库中的表中设置参照完整性约束,这些表受Informix数据库中的表约束(参考)?”

答案是(遗憾地):

  • 没有

大多数DBMS不愿意具有跨数据库参照完整性约束,更不用说跨DBMS约束。

最接近的是在SQL Server数据库中拥有相关Informix表的副本,但这可能会增加数据传输工作量。 OTOH,清理数据可能需要 - 一旦数据更加理智,稍后可能放松复制。它部分取决于引用的Informix数据的易变性 - 在引用的表中添加或删除行的频率。