交待:使用的軟硬體環境為Win XP SP2、SQL Server 2000 SP2個人版、普通雙核台式機、1000M區域網路,A機為已使用的伺服器,上面已有資料庫和海量資料,B機為此次新架伺服器,兩機登陸方式均為sql server身分識別驗證模式,其它設定均為預設設定,無特別。A機上另有FTP伺服器,用於程式自動更新。
1、在A機上執行Database Backup。
2、用A機上備份下來的Database Backup檔案在B機上執行資料庫恢複,保證A、B機均有完全相同的資料庫。(弄完後發現這上步好像不用做,反正發現時我已經弄完了,也就沒有推倒重來驗證)。
3、在A、B機上建兩個使用者名稱、密碼完全一樣的使用者(控制台>電腦管理>使用者>建立),並把它們加入到administartor組。(如果兩台機原來就都用administartor使用者登入,那麼,把兩台機的登入密碼改成一樣就行,不用另行建新使用者)
4、兩台機上均進行此操作:啟動>程式>管理工具>服務>按右鍵SQLSERVERAGENT>屬性>登陸>設定為上一步弄的那個使用者名稱和密碼。
5、在A機上進入企業管理器,把B機伺服器加進伺服器組,B機上進入企業管理器,把A機伺服器加入伺服器組。為省得麻煩,我都用了Sa用於兩機互相登入SQL Server。
6、A機進入企業管理器,按右鍵要發布的資料庫>建立>發布,一步步下去就行,無需要特別設定的地方,走完了後,資料庫下面會多出一個“發布”條目,右鍵點擊>屬性,可變更發布屬性各項設定。要注意幾點:1是代理登入使用者要用第3步中設定的使用者,不能用“系統使用者”,2是資料庫訪問使用者要指定(我是用的Sa,省得麻煩),3是要把A機上存放快照的目錄設為共用,不共用的話,B機是得不到快照的(我是沒用SQL預設的目錄,人工指定為FTP伺服器的根目錄,原因下詳),4是注意發布代理的工作頻率不要設定過快,必竟產生快照檔案,然後通知訂閱者,訂閱者再來拿資料還是需要一些時間的,至於需要多快,看你資料變動頻率以及兩機同步的快慢來設定吧,對於我來說,一天的資料丟失完全可以承受,於是乎,我設定了每5小時發布一次。
7、B機進入企業管理器,按右鍵要同步的資料庫>建立>訂閱,一步步下去就行,無需要特別設定的地方。
8、完成後,按理說應該就能同步了,但我發現沒有效果,查看A機上的發行管理器日誌後發現,原來是B機不能取得A機上的快照檔案,一看,原來SQL Server訂閱用的連接埠居然是445,與病毒掃蕩波一樣,所以被防火牆攔掉了,囧,而我又不具有修改防火牆攔截規則的許可權。於是在發行伺服器屬性中把快照存放目錄指定為FTP所在根目錄,開啟允許FTP,填入FTP伺服器訪問使用者名稱和密碼,重新運行發布代理。B機上刪除原訂閱,重建立立訂閱,設定採用FTP方式,於是問題解決。
PS:網上參考資料均說同步的表需要有主鍵,但我的系統中有一些表是沒有主鍵的(因為表中每列均存在若干相同值,所以無法加主鍵,也懶得再去改表結構專門添加個序列,因為加個序列,偶就得改程式了,怕怕——!),最後同樣成功了,SO,表有沒有主鍵,肯定是不影響同步的,至少不影響快照同步模式。