2013-01-05 84 views
0

我必須監視數據庫中的一個表以進行更改,並將它們複製到另一個數據庫中的某個表中。出於某種原因,我無法修改原始數據庫的結構,因此我不能使用觸發器或創建約束等。更改跟蹤似乎是我需要的理想解決方案,但某些表沒有主鍵因此我無法使用它。至於更改數據捕獲,此處 - http://msdn.microsoft.com/en-us/library/bb522511.aspx寫入以下內容:SQL Server的更改跟蹤/更改數據捕獲與沒有主鍵的表?

「要啓用網絡跟蹤,源表必須具有主鍵或唯一索引。」

所以基本上,似乎有類似的問題。

有沒有針對這種情況的解決方法?或者我錯過了什麼?

+0

*如果它沒有主鍵,它不是一個表... * –

回答

2

編號讓他們有一個主鍵。無論如何它有一個。如果這不起作用 - 對不起,無法使用主鍵,您無法確定哪些表格確實發生了變化。誰應該鞭打他,然後爲他寫一篇小小的「我需要工作」的廣告,在麥當勞供應漢堡 - 他顯然在數據庫設計上失敗了。

您現在唯一的選擇是對每個同步進行完整的數據比較。玩的開心。沒有解決方法。這項技術需要定義一個主鍵,如果你不能使用觸發器或其他任何東西,那麼「選擇」和代碼端數據比較(這將是緩慢的)是你唯一的選擇。

+1

我可以補充說,沒有PK變化跟蹤是沒有意義的。必須有一些**唯一的**標識一行**的整個生命期**。否則,如果存在重複的行或者所有列可以一次更改的行,則跟蹤行爲不清楚。 –

+1

是的,沒有。我假設這些行確實有一個邏輯PK,只是它沒有設置到數據庫中。甚至可能是服務器的唯一索引,而不是PK。 – TomTom