从SQL Server与Informix通信

从SQL Server与Informix通信,sql,sql-server,sql-server-2000,informix,Sql,Sql Server,Sql Server 2000,Informix,对。。。我有一个程序正在进行维护 呃。甚至描述它都让我不寒而栗。。。对,好 每天晚上,运行在我们认为是SQLServer2000上的数据库都会连接到Informix数据库并将其复制到SQLServer中 Informix/SQL数据由我维护的程序访问,然后将一些数据存储在不同的SQLServer2000数据库中。此数据应该对Informix数据具有外键约束,但没有 接下来,来自SQL数据库的数据被放回Informix/SQL数据库,然后再放回实际的Informix数据库 基本上,我的问题的根源是

对。。。我有一个程序正在进行维护

呃。甚至描述它都让我不寒而栗。。。对,好

每天晚上,运行在我们认为是SQLServer2000上的数据库都会连接到Informix数据库并将其复制到SQLServer中

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

接下来,来自SQL数据库的数据被放回Informix/SQL数据库,然后再放回实际的Informix数据库

基本上,我的问题的根源是在非Informix SQL数据库上没有外键或主键约束。嗯,有些表在没有意义的“ID”列上有主键,但这些表不适用于任何其他表

我的问题是:
是否可以以某种方式将SQL Server 2000链接到本机Informix数据库,以便我可以在SQL数据库中添加外键约束,以便SQL Server只能在引用Informix数据库中的现有行时创建行?

我会尽我所能回答任何人提出的任何问题,但就我所知,这些设计决策背后的理由是真正的疯狂,因此原因不会特别明确,因为我自己无法解决这些问题……

  • 恶心
  • (你继承的烂摊子)真倒霉
  • 祝你好运(你的工作解决了这个烂摊子)
Informix的哪个版本,它运行在什么平台(机器类型,o/s)上

您不能更新Informix模式以强制实施真正的RI约束是否有原因(除了因为数据混乱而中断之外)。但你可能需要知道混乱有多严重,这样你才能开始清理过程。IDS(Informix动态服务器)确实有“违规表”,可用于跟踪有问题的数据行-“开始违规”和“停止违规”是要在Informix SQL指南:语法手册中查找的语句。在开始加载启用违规检查的数据之前,您可能需要从一个表中卸载和删除数据


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

答案是(遗憾的):

  • 没有
大多数DBMS都不愿意有跨数据库引用完整性约束,更不用说跨DBMS约束了

最接近的近似方法是在SQLServer数据库中拥有相关Informix表的副本,但这可能会增加数据传输工作负载。OTOH,清理数据可能需要这样做——一旦数据更接近正常,以后可能会放松复制。这在一定程度上取决于被引用Informix数据的波动性——在被引用的表中添加或删除行的频率。

  • 恶心
  • (你继承的烂摊子)真倒霉
  • 祝你好运(你的工作解决了这个烂摊子)
Informix的哪个版本,它运行在什么平台(机器类型,o/s)上

您不能更新Informix模式以强制实施真正的RI约束是否有原因(除了因为数据混乱而中断之外)。但你可能需要知道混乱有多严重,这样你才能开始清理过程。IDS(Informix动态服务器)确实有“违规表”,可用于跟踪有问题的数据行-“开始违规”和“停止违规”是要在Informix SQL指南:语法手册中查找的语句。在开始加载启用违规检查的数据之前,您可能需要从一个表中卸载和删除数据


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

答案是(遗憾的):

  • 没有
大多数DBMS都不愿意有跨数据库引用完整性约束,更不用说跨DBMS约束了


最接近的近似方法是在SQLServer数据库中拥有相关Informix表的副本,但这可能会增加数据传输工作负载。OTOH,清理数据可能需要这样做——一旦数据更接近正常,以后可能会放松复制。这在一定程度上取决于被引用Informix数据的波动性——在被引用的表中添加或删除行的频率。

澄清一下:您希望SQL Server对Informix数据库实施一些关键约束?或者,您是否希望简化数据视图?如果你想要的是后者,您将在SQL Server上执行一些数据清理,然后在您确信数据正确时添加约束。我希望SQL Server只能在Informix数据库中找到相应的主键时才能创建一行。澄清一下:您希望SQL Server在Informix数据库上强制执行一些键约束?或者,您是否希望简化数据视图?如果后者是您想要的,您应该在SQL Server上进行一些数据清理&然后在您确信数据正确时添加约束。我希望SQL Server只有在Informix数据库中找到相应的主键时才能创建行。对不起;我所说的“Informix/SQL”是指复制到sqlserver的Informix数据库。它看起来很笨拙,没有必要拥有它;我所说的“Informix/SQL”是指复制到sqlserver的Informix数据库。它看起来很笨拙,没有必要拥有它。