遺忘筆記本 - 麥穗

常常忘記東西,於是開始有想找一個地方,寫下一些遇到的事情。

文章分類

每月文章

文章標籤

全部標籤

Blog - 技術性部落格

其他

其他技術性相關網站

論壇與新聞

MS SQL 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 語法,會產生類似如下的文字檔
 

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[Base_SignCodes]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
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 欄位名稱複製到資料行名稱欄位,後面語法也另外複製起來,貼到資料行定義欄位

[char] (1) COLLATE Chinese_Taiwan_Stroke_CI_AS NOT NULL

    d. 照上面的步驟就可以完成一個資料行的新增了,完全不需要自行撰寫語法。缺點就是一個欄位就要重複一次這樣的動作,
        如果有多個欄位要新增,那就...

 

 2009/7/28 Update:

更新的這段,早在數天前就得知。經強者我朋友的告知,MS SQL 2000 在同步上的支援並不是很好,有些許的 bug ,他建議我更換為 2005 來開發較好。至於2000有什麼問題或詳細內容則尚待查找,最近實在沒空阿~

 

 

 


DotBlogs Tags: MSSQL 同步 複寫 posted on 2009/2/6 10:07 | 閱讀數 : 8903 我要推薦 | Add Comment | 文章分類 [ 資料庫 ] 訂閱

Feedback

目前沒有回應.
標題
姓名
電子郵件 (將不會被顯示)
個人網頁
內容
登入後使用進階評論
Please add 1 and 7 and type the answer here: