2010-10-22 44 views
1

正確...我有一個程序,我正在做一些維護。從SQL Server與Informix通信

Urgh。即使描述它也讓我不寒而慄......沒錯,好吧。

每天晚上,運行我們認爲是SQL Server 2000的數據庫都會連接到Informix數據庫並將其複製到SQL Server中。

Informix/SQL數據由我維護的程序訪問,然後將一些數據存儲在不同的SQL Server 2000數據庫中。這些數據在Informix數據上應該有外鍵約束,但不是。

更進一步說,來自SQL數據庫的數據被放回到Informix/SQL數據庫中,後來又回到實際的Informix數據庫中。

基本上,我的問題是在非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?

我會盡我所能回答任何問題任何人,但據我可以告訴這些設計決策背後的推理是真正的瘋狂,所以原因不會特別即將到來的,因爲我不能解決它們,我自己...

+0

澄清:您希望SQL Server **對informix數據庫執行**一些關鍵約束條件?還是你想簡化你對數據的看法?如果後者是你想要的,你會在SQL Server上進行一些數據清理,然後在確信數據正確時添加約束。 – 2010-10-22 16:05:22

+0

我希望SQL服務器只能在Informix數據庫中找到相應的主鍵時創建行。 – Frosty840 2010-10-24 14:03:42

回答

1
  • Yuck!
  • 運氣不好(繼承你的爛攤子)!
  • 祝你好運(你的工作解決了這個爛攤子)!

哪個版本的Informix以及它運行的平臺(機器類型,o/s)?

是否有一個原因(除了會因爲數據混亂而中斷),您無法更新Informix模式以強制實際的RI約束。但你可能需要知道這個爛攤子有多糟糕,以便你可以開始清理過程。 IDS(Informix Dynamic Server)確實有'違規表',可以用來跟蹤有問題的數據行 - 'START VIOLATIONS'和'STOP VIOLATIONS'是在Informix SQL指南中查找的語句:Syntax manual在開始加載啓用了違規檢查的數據之前,需要卸載並刪除一個表中的數據。


澄清後,這個問題似乎是「我可以設置參照完整性約束在由(參考)在Informix數據庫中的表約束在SQL Server數據庫中的表?」

這個問題的答案是(可惜):

  • 沒有

大多數DBMS都不願意具有跨數據庫參照完整性約束,更不用說跨DBMS的限制。

最接近的近似值應該是在SQL Server數據庫中擁有相關Informix表的副本,但這可能會增加數據傳輸工作負載。OTOH,清理數據可能需要 - 稍後可能會放寬複製,一旦數據更接近理智。它部分取決於引用的Informix數據的波動性 - 行被添加或刪除到引用表的頻率。

+0

對不起;通過「Informix/SQL」我的意思是複製到SQL Server的Informix數據庫。它似乎是笨拙和不必要的。 – Frosty840 2010-10-24 14:13:33