2011-01-27 56 views
1

嘿,我在sql server 2005中有一個很大的數據庫,因爲它太大了,我需要將它複製到其他服務器。我建立了sql複製發佈者和腳本,但它並沒有穩定的表現。 這不是每個插入的複製,它也不會拋出任何異常。 此外,我在這裏關注性能,所以我想知道是否有其他替代方案可以使用... 我不需要複製數據庫中的每一行或所有表。SQL複製替代?

如有任何意見,請點擊這裏!

謝謝!

UPDATE: 什麼我正嘗試在這裏實現對數據庫的負載平衡。我期望這裏有很多流量,所以我在考慮使用複製的數據庫向用戶顯示信息。意義,插入,更新和刪除將在主數據庫中執行,選擇將在新數據庫中執行。由於複製的數據庫僅用於選擇,並向用戶顯示信息,因此我只需要那些適用於應用程序的行。另外,我想這裏沒有規格化表格,以避免使用連接並儘快檢索信息。 我設置的複製是事務性的,實際上,我遇到的問題是,按照相同的過程插入一行,它會一次複製結果,然後再次嘗試,但沒有結果。從那以後它一直在這樣工作。

回答

1

這聽起來像你想使用Transactional Replication

的應用需要低延時的時間變化在發佈製成,並且改變在用戶到達。

但是,您需要認識到,在更新應用之間可能存在小的延遲,並且它們在訂閱數據庫中可見。大多數應用程序可以解決這個問題,但是您可能需要在應用程序中進行更多的工作,以防止基於陳舊數據執行工作(如果您考慮過這個問題,應用程序應該可能已經在處理這類問題,因爲用戶通常可以看看這個(多)分鐘的畫面提交更改。


從您的編輯,你已經嘗試過事務複製來看,和遇到的問題。我通常建議練習設置複製一些在使用真正的數據庫進行嘗試之前,只需簡單地瞭解它的工作原理即可,只需幾張表和幾行數據即可開始複製(兩個數據庫都可以在同一臺服務器上)試驗各種選項如果複製停止w (如您所示),您需要尋找事件和日誌消息,以指示出錯/停止工作。根據你的描述,它確實聽起來像事務複製是你需要的,所以我會說堅持下來,如果你發現了特定的錯誤,搜索serverfault,或者在那裏提出關於這些錯誤的新問題。

0

您可以通過集成服務創建一個可以計劃運行並更新第二個服務器數據庫的包。

+0

這應該是幾乎瞬間。我的意思是,一旦插入,更新或刪除主DATABSE製成,其他數據庫應該是所有的時間立即更新,否則用戶可能沒有更新的信息...... – Ragalante 2011-01-27 14:39:54

1

我認爲觸發器將是一個不錯的主意,但我有同樣的情況,但在我的情況,我需要在所有的不同位置可以張貼在他們的位置數據,需要同步與所有其他地方的數據的所有位置!

在這種情況下,我已經實現了我自己的服務器ID和SQL日誌創建複製表的邏輯。

在軟件上運行,所有日誌複製到每個位置並執行主服務器上。

這個解決我的問題但是它仍然需要一些優化喜歡旅行期間壓縮數據來提高複製速度,因爲我已經在每個數據庫每週將近100000項,我有4個地點。