2009-07-22 83 views
4

我剛剛遇到一些令人不安的事情,我試圖從一個數據庫實現事務複製,而這個數據庫的設計不在我們的控制之下。這種複製是爲了執行報告而不會對系統徵稅太多。在嘗試複製時,只有一些表經歷了。沒有主鍵的事務複製(唯一索引)

調查表沒有被選中複製,因爲他們沒有主鍵,我認爲這不能被它顯示爲主鍵,如果我使用ODBC和MS訪問,但不是在管理工作室。此外,查詢並不是很慢。

我試着插入一個重複的記錄,並沒有說關於唯一索引(不是主鍵)。似乎是使用唯一索引實現的表與主鍵相對。爲什麼我不知道我會尖叫。

反正是有執行事務複製或替代方案,它必須是活的(最後兩分鐘)。主數據庫服務器是目前SQL 2000 SP3a中和報表服務器2005年

目前我已經想到了嘗試是設置複製,就好像它是另一種類型的數據庫的唯一的事情。我相信複製說甲骨文是可能的,這將強制使用說一個ODBC驅動程序,如我假設訪問使用,因此顯示主鍵。我不知道這是否準確。

回答

7

作爲MSDN states,它是不可能創建上沒有主鍵表事務複製。你可以使用Merge replication(單程),不需要一個主鍵,如果它不存在,它會自動創建一個rowguid柱:

合併複製使用全球 唯一標識符(GUID)列到 標識合併過程中的每一行 複製過程。如果已發佈的 表沒有唯一標識符 柱ROWGUIDCOL屬性 和唯一索引,複製加 之一。確保任何引用發佈的 表的SELECT和INSERT 語句使用列列表。如果一個表是 不再發布,並且複製 添加了該列,則刪除該列爲 ;如果列已存在,則不會被刪除。

不幸的是,你會如果使用合併複製有性能損失。

如果你需要使用複製的僅報告,並且不需要的數據是完全一樣的發佈者,那麼你可以考慮快照複製也

+1

不能做合併複製因爲它會添加一個guid,所以這個數據庫通常會被定期修改以添加列等以及發送給我們的腳本來運行以執行更新。如果我添加了一個guid列,他們可能會撤消支持等等。看起來我被卡住了,除非我們在主數據庫服務器上升級到sql 2005,那麼我可以做鏡像,只是把它看成是隻讀的。不幸的是,需要在一分鐘內收集實時數據。 – PeteT 2009-07-22 13:27:33