摘要:複寫使用(SQL Server 同步) for MS SQL 2000 Server
先暫時記下重點,改天有空再來補上詳細資料。
注意事項
1. 必須先建立一個本機帳戶,其必須有足夠的權限,來啟用 SQLSERVERAGENT 服務。(要使用此帳戶來啟用服務,不能使用預設的)
2. 在設定快照集網路位置時候,要注意路徑。
預設路徑通常類似 \\TEST\C$\Program Files\Microsoft SQL Server\MSSQL\REPLDATA
最好修改成 \\TEST\REPLDATA ,並確定分享在網芳可以讀取得到。
3. 訂閱建立好後,要檢查訂閱的執行帳戶設定。在所訂閱的規則上按右鍵,選內容,同步頁,代理程式屬性,查看擁有者。
這邊最好選一個擁有足夠權限來執行訂閱動作的 DB 帳戶。(不知道就選 sa)
4. 當一個發行與訂閱建立完成後,若要新增修改資料表或欄位設定,則要注意相關的發行集設定。
要新增資料表,直接新增後,在發行集中,將新增的資料表添加到發行集中。
若要修改資料表,則必須在發行集中設定,不能直接編輯資料表欄位。且僅能對資料表作新增與刪除動作。新增動作,
必須搭配 SQL 語法來執行。
5. 錯誤訊息【您必須重新執行快照集,因為目前的快照集檔已經過時。】。發生原因為我將啟用 SQLSERVERAGENT
服務的帳號權限降為 User ,導致權限不足以啟用 SQLSERVERAGENT 。將權限加回,並重新啟用代理程式即可。
(發行集的內容,狀態頁,啟用服務 + 立即執行代理程式)
6. 延續 4. 。使用的 SQL 語法,事實上是很簡單的。即使不會語法也能來做這步驟。
a. 首先先在測試表格上建立要新增的欄位與其格式,可用精靈來做這步驟。
b. 接著,對此測試表格產生 SQL 語法,會產生類似如下的文字檔
drop table [dbo].[Base_SignCodes]
GO
CREATE TABLE [dbo].[Base_SignCodes] (
[SignCode] [char] (2) COLLATE Chinese_Taiwan_Stroke_CI_AS NOT NULL ,
[Prefix] [char] (1) COLLATE Chinese_Taiwan_Stroke_CI_AS NOT NULL ,
[Suffix] [char] (1) COLLATE Chinese_Taiwan_Stroke_CI_AS NOT NULL ,
[Sort] [int] NOT NULL
) ON [PRIMARY]
GO
c. 擷取我們要新增的欄位那行,舉例,要多新增 Suffix 這個欄位,則除了將 Suffix 欄位名稱複製到資料行名稱欄位,後面語法也另外複製起來,貼到資料行定義欄位
d. 照上面的步驟就可以完成一個資料行的新增了,完全不需要自行撰寫語法。缺點就是一個欄位就要重複一次這樣的動作,
如果有多個欄位要新增,那就...
2009/7/28 Update:
更新的這段,早在數天前就得知。經強者我朋友的告知,MS SQL 2000 在同步上的支援並不是很好,有些許的 bug ,他建議我更換為 2005 來開發較好。至於2000有什麼問題或詳細內容則尚待查找,最近實在沒空阿~