解決兩相同資料同步的問題

2021-04-17 04:21:01 字數 1062 閱讀 5186

為使用者組建一套應用系統時,使用者經常提到這樣的要求:

如果其中一台伺服器壞了,怎樣才能防止資料丟失,並在最短的時間內恢復系統?

要解決這個問題,肯定需要兩台伺服器,並在兩台伺服器上裝有相同的資料庫,保持兩台伺服器中的資料同步,當主伺服器壞了時,將另外一台伺服器更改一下計算機名稱,從而使得工作站可以繼續執行.

那麼如何保持兩台資料庫中的資料同步呢?sqlserver提供了出版-定閱機制,可以將資料實時的拷貝到定閱伺服器中.但在實際應用中,發現一旦建立起了出版-定閱關係,在定閱伺服器資料庫中的觸發器,主鍵等東西都不見了!!!當主伺服器不能正常工作時,要想讓另一台伺服器轉變為主伺服器,除更改計算機名外,還需建立觸發器,索引等,過程比較煩瑣.特別當使用者對資料庫維護不熟悉時,這種操作更加麻煩.

sqlserver做為一種資料庫管理系統,它與客戶的介面都是通過sql語句進行的,使用者在插入一條記錄時,sqlserver會接收到insert語句;更改一條記錄時,會接收到update命令...

那麼如果我們能在sqlserver中跟蹤到所有發給sqlserver的sql語句,那麼我們就可以知道資料庫發生了哪些改變,並可以將這種改變發給另外一到伺服器,從而實現資料實時同步的功能.

值得高興的是,sqlserver提供了跟蹤功能,它們是以xp_trace_******的一系列儲存過程,

你可以設定過濾條件,從而只跟蹤影響你的資料庫變化的sql語句,將這些sql語句存放在本地表中,再從本地表中讀出,傳送給另外一台伺服器,從而實現資料同步功能.這種方法可以跟蹤任何型別的變化,包括image型別資料的改變.

query1->close();

query1->sql->clear();

tstrings*psql=query1->sql;

wsprintf(tempbuf,"execxp_trace_setdbidfilter@queue_handle,%d",dbid);

psql->add(ansistring(tempbuf));

wsprintf(tempbuf,"execxp_trace_settextfilter@queue_handle,'%s',null",sqlfilter.c_str());1

解決兩相同資料庫資料同步的問題 續

筆者是在山東濰坊出差時,遇到了使用者要求的提供雙機熱備份功能,最終的解決方案是 在主服器上執行同步程式 用bcb5.0編寫的程式 同步程式在啟動時,在sql server 中建立跟蹤過程,跟蹤過程將跟蹤到的sql 語句存放在主伺服器的跟蹤表中 同步程式每隔半分鐘訪問跟蹤表,將其中的sql 語句傳送到...

如何同步滾動兩個相同的DataGrid

如何同步滾動兩個相同的datagrid 昨天在csdn上看到有人高分 100 問這個問題,不憂心中有些癢癢,仔細看了看問題,其實也是我很久以前就像做的一件事情了,今天剛好是週末回家研究一下,有些收穫,拿出來和大家分享。問題描述 在winform中如何同步滾動兩個datagrid。問題分析 拿到這個首...

兩台SQL Server資料同步解決方案

複製是將一組資料從乙個資料來源拷貝到多個資料來源的技術,是將乙份資料發布到多個 儲存站點上的有效方式。使用複製技術,使用者可以將乙份資料發布到多台 伺服器上,從而使不同的伺服器使用者都可以在許可權的許可的範圍內共享這份資料。複製技術可以確保分布在不同地點的資料自動同步更新,從而保證資料的一致性。sq...