none
請問一般該如何做資料庫同步?

    問題

  • 您好:
    若目前有一台sql2005 及 一台sql2005 express
    那若我想 將sql2005 express 上的異動資料,同步回sql2005
    這有辦法作到嗎?

    謝謝!
    2012年7月9日 上午 02:33

解答

  • Hi

    能完成您的需求的,我想應該合併式複寫會比較符合您的需求

    相關基本條件,您可以參考複寫資料至 SQL Server Express

    說明的部分,您可以參考這篇合併式複寫

    不過您要注意資料衝突的問題,以及做了Merge Replication之後,會多一個rowguid的欄位

    如果您的Application在SQL語法中並沒有指定欄位,會發生些問題

    例如:INSERT INTO [Table_Name] VALUES (值1, 值2,....),這種沒有指定欄位的時候,會因為多一個rowguid的欄位而失敗


    Best Regards, Daniel Liang

    • 已標示為解答 softballnow 2012年7月19日 上午 12:12
    2012年7月10日 下午 06:41
  • 1. you have to create login if don't want to use service account.

    2. log backup will not affect replication, but don't shrink log file.

    • 已標示為解答 softballnow 2012年7月19日 上午 12:12
    2012年7月18日 下午 01:06

所有回覆

  • 請問你從 SQL Server 2005 Express 同步資料到 SQL Server 2005 是希望以整個DB為單位嗎?還是以TABLE為單位?另外,你希望同步的頻率是如何?即時還是可以接受延遲?

    依照你的需求,假設你可以接受延遲,或許可以在 SQL Serve 2005 建立一個 Agent Job ,定期去撈 EXPRESS 的資料來寫到 SQL Server。

    或許您可以先參考一下 SQL Server 2005 Express 的一些功能上的限制。

    http://www.teratrax.com/sql-server-express-management-limitations/


    以上說明若有錯誤請指教,謝謝。
    http://www.dotblogs.com.tw/terrychuang/

    2012年7月9日 上午 08:03
  • Can try copy data with ssis or via linked server from sql2k5 side.
    2012年7月9日 下午 01:48
  • 您好:

    目前是希望整個db為單位,2005EXPRESS  有異動的資料,同步到 sql2005

    頻率是可以延遲的,可能幾小時做一次即可。主要是要把 2005EXPRESS 的異動資料 同步到sql2005

    目前是有想過,靠sql2005 的agent去抓資料,但新增/刪除 或許還可用差集來做,但 updte 計之該如何用了?

    不過,主要還是想請問,有什麼方法可以直接處理 這一個問題!謝謝!

    2012年7月10日 上午 12:06
  • Hi,

    您好,以下有SQL 2008 Express Replication相關資訊,給您參考,希望對您有幫助,謝謝!

    SQL Server Express 2008 R2 - Merge Replication
    Merge Replication from SQL 2008 express


    以上說明若有錯誤請指教,謝謝。
    亂馬客blog: http://www.dotblogs.com.tw/rainmaker/

    2012年7月10日 上午 03:05
  • Express edition can't be publisher of replication.
    2012年7月10日 下午 02:06
  • Hi

    能完成您的需求的,我想應該合併式複寫會比較符合您的需求

    相關基本條件,您可以參考複寫資料至 SQL Server Express

    說明的部分,您可以參考這篇合併式複寫

    不過您要注意資料衝突的問題,以及做了Merge Replication之後,會多一個rowguid的欄位

    如果您的Application在SQL語法中並沒有指定欄位,會發生些問題

    例如:INSERT INTO [Table_Name] VALUES (值1, 值2,....),這種沒有指定欄位的時候,會因為多一個rowguid的欄位而失敗


    Best Regards, Daniel Liang

    • 已標示為解答 softballnow 2012年7月19日 上午 12:12
    2012年7月10日 下午 06:41
  • 您好:謝謝.
    因為目前還沒有什麼概念,所以先網路上找一些sample要來測試.

    但卻先出現 db name的問題,可否指導 一下,謝謝:

    要去練習實做散發時,
    當我做"設定散發"時,出現以下訊息:

    SQL Server 無法連接到伺服器 'DB03\SQL2005'。
    SQL Server 複寫需要有實際的伺服器名稱才能連接到伺服器。不支援透過伺服器別名、IP 位址或任何其他替代名稱來進行連接。
    請指定實際的伺服器名稱,'DB12\SQL2005'。 (Replication.Utilities)

    請問,
    目前實際的db名稱為 DB12\SQL2005 嗎?
          舊的db       DB03\SQL2005 嗎?

    因為我有用      
     SELECT @@SERVERNAME, SERVERPROPERTY('ServerName')
         ==>DB12\SQL2005,    DB03\SQL2005

    而我看sql server configure manager 裡面,他sqlSERVER2005服務,名稱為DB03

    而exec sp_helpserver 結果如下
    name                 network_name              status
    DB12\SQL2005         DB12\SQL2005           rpc,rpc out,use remote collation
    repl_distributor     DB12\SQL2005           rpc,dist,rpc out,system,use remote collation

    請問 以上2台視相同的嗎? 他的network_name 是一樣的
    但有一台的status=dist
    他已經被當作散發者了嗎? 因為有去點選DB的"複寫",但裡面都沒有東西...

    而要修改的名稱動作如下?
    sp_dropserver 'DB03\SQL2005'         /*刪除舊名*/
    sp_addserver 'DB12\SQL2005','local'  /*新增舊名*/

               
    2012年7月11日 上午 09:03
  • Yes, @@servername is the correct none. You should change it with sp_dropserver and sp_addserver then restart sql.
    2012年7月11日 下午 12:56
  • 那,要做sp_dropserver 時,出現

    仍然有伺服器 'DB12\SQL2005' 的遠端登入或連結登入。

    請問 這會是有登入,或其他 dblink ,或因素造成?

    我有停掉AGENT,沒效.

    用sp﹍who2f去看,也沒有其他遠端登入...


    sp_dropremotelogin 'DB12\SQL2005';

    訊息 15185,層級 16,狀態 1,程序 sp_dropremotelogin,行 68
    在遠端伺服器 'DB12\SQL2005' 沒有對應到本機使用者 '(null)' 的遠端使用者 '(null)'。

    謝謝!


    2012年7月12日 上午 01:33
  • Should you drop DB03\SQL2005 instead?
    2012年7月12日 下午 01:39
  • 您好:

    不是:

    SQL Server 無法連接到伺服器 'DB03\SQL2005'。<<----------------------------新
    SQL Server 複寫需要有實際的伺服器名稱才能連接到伺服器。不支援透過伺服器別名、IP 位址或任何其他替代名稱來進行連接。
    請指定實際的伺服器名稱,'DB12\SQL2005'。 (Replication.Utilities) <<--------舊

    嗎?我要刪除新的嗎?

    2012年7月13日 上午 12:02
  • What's host name? That's the name you should use.
    • 已編輯 rmiao 2012年7月13日 上午 03:12
    2012年7月13日 上午 03:11
  • 您好:

    我新架2台server
    S2005 (SQL2005)
    Express(EXPRESS2005)

    先測試 s2005 送給EXPRESS 看是否成功

    依序動作如下:
    1.S2005 設定散發
      並將散發資料分享到 \\s2005\X\ 下

    2.s2005建立發行集 (S2005_ 發行)
    2-1.類型:合併式發行集
    2-2.訂閱者類型:sql2005
    2-3.發行遇到問題:uniqueidenfer 將被新增到資料表中
    2-4.安全設定:sql agent服務帳戶執行


    3.EXPRESS建立訂閱:
    3-1.發行者:S2005
    3-2.合併代理程式位置:在訂閱者端執行每一個代理程式(提取訂閱)
    3-3.合併代理程式安全性:使用sa登入
    3-4.同步爬排程:訂閱者:僅在需要時執行
    3-5.發生衝突時:用戶端:率先造訪發行者優先處理


    然後S2005修改資料
    定點選 (S2005_ 發行)-->檢視快照集代理程式狀態-->啟動
    順利執行完畢。

    但結果 express 沒有異動資料.....
    請問試哪邊有問題嗎?
    我看分享的\\s2005\X\ 下 有檔案存在.

     
    2012年7月13日 上午 06:14
  • 您好:

    舊HOSTNAME :DB12
    舊SQL NAME:DB12\SQL2005

    新HOSTNAME :DB03
    新SQL NAME:DB03\SQL2005

    會跟dblink有關嗎?該db內有dblink?
    可以不移除,暫停的方式嗎?
    2012年7月13日 上午 06:17
  • 您好:

    接續

    我新架2台server
    S2005 (SQL2005)
    Express(EXPRESS2005)

    ---------------------------這一篇

    我後來去 安裝express的xp 中開啟"同步處理"wsm
    要做相關設定.
    我針對同步項目內:

    s2005發行:內容:不變更
    捨定:新增排程

    沒看到結果,然後我直接按"同步處理(S)"

    結果出現error:

    數值:20084
    來源:合併處理
    訊息:該處理無法連接到 Distributor 's2005'。


    53
    s2005
    具名管道提供者: 無法開啟 SQL Server 連線 [53].

    53
    s2005
    建立連線至伺服器時發生錯誤。連線至 SQL Server 2005 時,發生此失敗,可能是因為在預設設定下,SQL

    Server 不允許遠端連線。

    0
    s2005
    登入逾時終止
    合併處理無法執行查詢,因為查詢逾時。如果這個失敗繼續發生,請增加處理的查詢逾時。執行疑難排解時,

    請使用詳細資訊歷程記錄來重新啟動同步處理,並指定寫入的輸出檔。

    這具名管道是只:
    我S2005上
    msqlserver的通訊協定:Named Pipes 已啟用
    sql native client組態-->用戶端通訊協定:Named Pipes 已啟用

    2012年7月13日 上午 07:29
  • 您好:

    舊HOSTNAME :DB12
    舊SQL NAME:DB12\SQL2005

    新HOSTNAME :DB03
    新SQL NAME:DB03\SQL2005

    會跟dblink有關嗎?該db內有dblink?
    可以不移除,暫停的方式嗎?
    You should drop DB12\SQL2005 then add DB03\SQL2005.
    2012年7月13日 下午 03:15
  • Those servers are on same network? Enabled remote access on express machine?
    2012年7月13日 下午 03:19
  • 是的,目前 我沒辦法移除DB12\SQL2005

    2012年7月16日 上午 12:14

  • 您好:
    S2005 (SQL2005): 192.168.110.69
    Express(EXPRESS2005) :192.168.231.134   (虛擬機)
    我的pc:192.168.110.100

    以下使用ssms 連線
    我在 我的pc 110.100可以使用 s2005 ,express等名稱,連到以上2台主機
    我在 Express,可以用 110.69 ip方式連上,但無法用 s2005名稱連上 s2005 server

    我有去看過       S2005 與 express 的主機 sql server browser都有開
    2台 的database agent都有設定本機和遠端連接 -->使用TCP/IP和具名管道


    防火牆:
    S2005:沒啟動
    Express:沒開

    以下是我於 express上 用s2005要去連接 s2005 server時發生的錯誤訊息

    標題: 連接到伺服器
    ------------------------------

    無法連接到 s2005。

    ------------------------------
    其他資訊:

    在建立連接至伺服器時發生錯誤。當連接至 SQL Server 2005 時,失敗的原因可能是,在預設設定下,SQL Server 不允許遠端連接。 (provider: 具名的管線提供者, error: 40 - 無法開啟至 SQL Server 的連接) (Microsoft SQL Server, 錯誤: 53)

    2012年7月16日 上午 01:01
  • 您好:

    最後 我有試著在express 上的host 加上 s2005 ip 和name 就可以連上了

    不過,因為資料夾分享的權限,似乎2邊要相同的帳號/密碼 才可以做

    請問,這一段 若是 我2邊都新增一個 rp帳號(密碼一樣)

    並將 分想的資料夾 權限定 all 給 rp

    但,我於express 及 s2005 機器登入時,並不是用rp 帳號登入

    這樣,該如何讓她可以自動以 rp 帳號來連線取用呢?

    謝謝

    2012年7月16日 上午 02:07
  • Sounds dns related issue, ensure both servers are registered in dns. 
    2012年7月16日 上午 02:10
  • Or add sql2k5 sever's name and ip address in hosts file on express machine.
    2012年7月16日 上午 02:13
  • 您好:

    我先前 先於EXPRESS 上的hosts 檔案設定,加上 IP   S2005.

    這樣ok,可以從EXPRESS 使用具名連上 S2005.

    但目前問題點:

    1.S2005 及EXPRESS win 登入帳號/密碼 要一樣,express 去使用 s2005 share出來的檔案才不會有問題.
    有辦法2邊同時加1個win 帳號 sqlahre ,但 我登入2邊機器都是用Admiistartor登入,
    然後,自動以SQLahre 來取得分享權限嗎?

    2.就算目前 我2邊都先使用Administaor來登入(密碼先暫時設定一樣)
    因為我使用sa驗證
    於自動排程時,他還是會跳出,對話視窗,要求key以下3個SQL登入的帳號,密碼
    訂閱者登入,發行者登入,散發者登入 等3個
    這有辦法排除,讓她直接自動連線嗎?

    謝謝!

    2012年7月16日 上午 03:02
  • 另外,我想要透過 來取得 express的變更資料,寫回s2005

    動作如下:但卻沒有看到訂閱?

    我將express上原本的(提取訂閱),刪掉
    然後,新增一個
    在散發者端s2005執行所有代理程式(發送訂閱)

    但建立完畢,於express 上"複寫-->本機訂閱"上,沒有看到任何訂閱?
    且 同步處理 設定內,也沒看到任何訂閱.

    我想要再於EXPRESS 新增一次訂閱,他去說以經建立....
    請問,這我該從哪邊去看? 要如何刪掉了?

    2012年7月16日 上午 03:24
  • Daniel-Liang您好:

    請問

    您說:

    不過您要注意資料衝突的問題,以及做了Merge Replication之後,會多一個rowguid的欄位.

    是指 2邊SERVER 都會 多一個rowguid的欄位? 

    因為我實際 先測試 由 sql2005 -->PULL -->express

    結果2 邊tb都會多一個rowguid的欄位.

    若是用鏡像,是否2就不會多一個 rowguid的欄位.

    但鏡像 好像2邊都要 sql2005 ,不能express...


    2012年7月16日 上午 07:19
  • 另外,我想要透過 來取得 express的變更資料,寫回s2005

    動作如下:但卻沒有看到訂閱?

    我將express上原本的(提取訂閱),刪掉
    然後,新增一個
    在散發者端s2005執行所有代理程式(發送訂閱)

    但建立完畢,於express 上"複寫-->本機訂閱"上,沒有看到任何訂閱?
    且 同步處理 設定內,也沒看到任何訂閱.

    我想要再於EXPRESS 新增一次訂閱,他去說以經建立....
    請問,這我該從哪邊去看? 要如何刪掉了?

    Express edition can't be publisher as I said above. For permission, yes you can create win local admin account on both servers with same id/pwd and use it to start sql services.
    2012年7月16日 下午 01:20
  • 您好:

    謝謝您.

    1.我知道 express不能為 publisher,那若是要達到 Daniel-Liang 所說的.

    利用合併式複寫來達到EXPRESS 回傳資料到 sql2005作用.
    是要於s2005端,來做一個取回的動作嗎?
    該如何實做?

    2.另外,目前我是有試著於express新增一個網路磁碟的方式,讓她可以抓到s2005分享的路徑.
    但我另外於2邊同時新增sqlshare的帳號,但當我express用 sqlshare登入後,
    於 "同步處理" 裡面,卻沒有看到 訂閱的項目在裡面,一定要用administrator登入才能看得到...

    謝謝

    2012年7月17日 上午 12:13
  • Express can't send transactions out even in merge replication.
    2012年7月17日 上午 02:39
  • 您好:

    謝謝您!

    我最後是參考 Daniel-Liang 的提示去做.

    於S2005去新增一個訂閱,然後用
    "在散發者端s2005執行所有代理程式(發送訂閱)",
    訂閱者 只選 sqlexpress 為訂閱資料庫.

    最後訂閱類型選 "EXPRESS" + 伺服器 +75優先權

    完成後,我於sqlexpress 新增/刪除/修改,都可以
    透過 s2005 上SQL AGENT的作業啟動後,
    將異動資料 由express-->s2005.

    且s2005也可異動到 express.

    不過,這樣雙向,若s2005端有異動,也會傳回去express..小殘念
     
    還有 每個要異動的table,似乎都會新增一個rowguid欄位..現有的程式可能要在查一下.

    另外,
    1.連結到訂閱者 ;連結到散發者與發行者
    都有一個 "藉由模擬處理帳戶" 的選項 ,與 SQL帳戶的選項.
    請問,使迂用這2個有何阿差別嗎?


    2.請問訂閱的處理跟LOG有關嗎?
    比如,我會每小時備份LOG,於特定日期 清除LOG (DBCC ...)
    這樣,跟訂閱他區別資料差異會有差異嗎?
    謝謝!


    3.於s2005上新增一個view
    然後於發行集 上勾選該view ,再去sql agent上依序執行
    s2005 的作業
    s2005-EXPRESS 的作業

    再到 express端 即可使用 該view

    但於express 新增一個view2
    但似乎就無法依上述方式,同步複寫一個view2到 s2005上....
    2012年7月17日 上午 07:28
  • 1. no difference if they have same permission.

    2. you should backup log, sql will not truncate unreplicated transactions.

    3. because express can't publish anything.

    2012年7月17日 下午 12:51
  • 您好:

    1.那請問 藉由模擬處理帳戶 是用那一個帳戶??

    在確定一下2:也就是備份歸備份, 散發歸散發,兩者不會因為 某一個先做後,下一個再做就會有影響。

    我可以 晚上1點做一次完整備份,然後 每小時1次log備份,並於23點用dbcc方式清掉log檔案大小.

    而散發,每天11:30 與23:30 各作一次。

    這樣都不會相互影響到?

    謝謝!

    2012年7月18日 上午 12:59
  • 1. you have to create login if don't want to use service account.

    2. log backup will not affect replication, but don't shrink log file.

    • 已標示為解答 softballnow 2012年7月19日 上午 12:12
    2012年7月18日 下午 01:06
  • 謝謝您!

    2012年7月19日 上午 12:11
  • Happy SQLing!
    2012年7月19日 上午 12:20