none
MSSQL 2014 複寫 覆蓋訂閱者資料表資料 RRS feed

  • 問題

  • 使用複寫之交易式發行集和合併式發行集,結果都是發行者的資料覆蓋到訂閱者的資料表,

    請問是用錯了發行集嗎?而使用快照式發行集在新增發行集時,會出現無論是有勾選primary key或沒有勾選,都會出現「自動識別範圍的支援只有在允許更新訂閱者的發行集上才有作用」,

    請問該怎麼做才會發行者的資料新增到訂閱者的資料表內而不是覆蓋?

    2017年11月3日 上午 09:54

所有回覆

  • You can change snapshot option to 'make no change', default is 'drop and recreate object on subscriber'.
    2017年11月3日 下午 04:54
  • 你能不能說清楚一點?在新增發行集的發行集類型並沒有快照選項?

    能不能具體說清楚一點是在哪裡做設定?

    2017年11月4日 上午 08:19
  • No snapshot for transaction replication? You want to set up peer to peer replication?
    2017年11月4日 下午 06:50
  • 在新增發行集點對點發行集設定時,並沒有快照選項設定?都是下一步/下一步設定?

    2017年11月5日 上午 01:55
  • Peer to peer replication doesn't use snapshot, but tables to be replicated have to be identical on all servers.
    2017年11月5日 下午 06:32
  • I am getting SQL Server Error 21852.

    How to fix it?

    2017年11月6日 上午 03:30
  • Have detailed message?
    2017年11月6日 下午 02:46
  • 使用SQL Server 2014進行複寫。SQL 的複寫功能有安裝,但在新增發行集出現以下錯誤:執行Transact-SQL陳述式或批次時發生例外狀況。散發者並未正確安裝。

    請問要如何解決?

    2017年11月20日 上午 05:25
  • Did you see distribute db on publisher?
    2017年11月20日 下午 02:21
  • 我在進行SQL Server 2014複寫時,會出現「無法大量複製到資料表」得錯誤,已經在發行集屬性-快照集-快照集格式-點選字元-如果發行者或訂閱者沒有執行SQL Server則需要,

    該如何解決?

    2017年11月21日 上午 11:26
  • 錯誤訊息補充「無法大量複製到資料表」,「正在大量複製到資料表」,「略過檔案因為在前一個發行項就已傳遞,或以由先前中斷的快照集傳遞」。

    2017年11月21日 上午 11:59
  • Which replication? How big is replicated table?
    2017年11月21日 下午 09:27
  • 交易式發行集,發行的Table有三個索引值,一個欄位varchar(max),目前共有264筆資料。
    2017年11月22日 上午 02:59
  • 在複寫監視器查錯誤訊息:bcp "VO"."dbo"."TABLE_LOG" in "D:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\ReplData\unc\OTS-DEV-COOP_VO_TA\20171122131258\TABLE_LOG_2.bcp" -e "errorfile" -t"\n<x$3>\n" -r"\n<,@g>\n" -m10000 -SOTS-DEV-COOP1 -T -w (來源: MSSQLServer,錯誤號碼: 20253)取得說明: http://help/20253

    執行這段命令bcp "VO"."dbo"."TABLE_LOG" in "D:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\ReplData\unc\OTS-DEV-COOP_VO_TA\20171122131258\TABLE_LOG_2.bcp" -e "errorfile" -t"\n<x$3>\n" -r"\n<,@g>\n" -m10000 -SOTS-DEV-COOP1 -T -w

    會得到錯誤:sqlstate = 22001 nativeerror = 0 string data right truncation

    用notepad++ 看TABLE_LOG_2.bcp,得到以下資料內容:

    1
    <x$3>
    9
    <x$3>
    09
    <x$3>
    1
    <x$3>
    23
    <x$3>
    0211
    <x$3>
    1061122
    <x$3>
    2017-11-22 11:06:15.000
    <x$3>
    2017-11-22 11:06:15.000
    <x$3>
    1061122
    <x$3>
    2017-11-22 11:06:15.000
    <x$3>
    2017-11-22 11:06:15.000
    <x$3>
    000
    <x$3>
    9997717093001
    <x$3>
    9997717093019
    <x$3>
     
    <x$3>
    0212345678
    <x$3>
     
    <x$3>
     
    <x$3>
     
    <x$3>
     
    <x$3>
     
    <x$3>
     
    <x$3>
     
    <x$3>
    0212345678
    <x$3>
     
    <x$3>
     
    <x$3>
     
    <x$3>
     
    <x$3>
     
    <x$3>
     
    <x$3>
    {"AMT":"00000000001","LCODE":"","PERIOD":"","COPIES":"","Currency":"","TBAL":"","MBAL":"","FUND_CODE":"","BONDS_CODE":"","TRANSACTION_NUMBER":"","DEALER_CODE":"             ","FUND_INVESTMENT_MONTH_SELECT":"","FUND_QUERY_DATE":"","FUND_CODE_IN":"","TRANSACTION_NO":"","BANK_CODE":"","HOST_RESPONSE":"","SEQNO":"","TAXING_AUTHORITY_N":"","PROOF_AMT":"","TIME_DEPOSIT_AMT":"","LOAN_AMT":"","CHECK_AMT":"","OBAL":"","LOAN_PAYMENT":"","FINE_AMT":"","DELAYED_INTEREST":"","BILL_AMT":"","PAYMENT_AMT":"","SBAL":"          40264.00","POSTING_DATE":"1061123","NPAYDATE":"","RECEIVED_TRANSACTION_DATE":"1061121","ECEIVED_TRANSACTION_TIME":"194040","DEPOSIT_TERM":"","LOAN_PERIOD":"","EXTENSION_PERIOD":"","RENEWAL_TYPE":"","RATE_CLASS":"","DEPOSIT_CLASS":"","PAYMENT_CATEGORY":"","BILL_TYPE":"","CHECK_STATEMENT":"","LOAN_RATE":"","ANNUAL_DEPOSIT_RATE":"","CUSTOM_NAME":"王小明                                    ","CUSTOM_GENDER":"1","ADJUSTED_TRANSFER_FEE":"","TRADE_DAY_MARK":" ","BANK_STATEMENT_MARK":"1","UNMATURED_SCHEDULED_TRANSFERS":"","BALANCE_MARK":"","SPECIAL_NEED":"","BILL_NUMBER":"","AUTOMATIC_TRANSFER_TYPE":"","RATE_BEFORE_CHANGE":"","RATE_AFTER_CHANGE":"","TRANSFERED_DEPOSIT_INTEREST":"","INTEREST_PAID_TYPE":"","TRANSFER_FEE":"","CANCELLING_DEBTS_NO":""}
    <,@g>

    嘗試在notepad++將\r\n取代為\r"0x0a",在執行bcp "VO"."dbo"."TABLE_LOG" in "D:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\ReplData\unc\OTS-DEV-COOP_VO_TA\20171122131258\TABLE_LOG_2.bcp" -e "errorfile" -t"\n<x$3>\n" -r"\n<,@g>\n" -m10000 -SOTS-DEV-COOP1 -T -w

    會得到錯誤:

    sqlstate=s1000 nativeerror=0 in bcp data-file 遇到非預期的eof

    2017年11月22日 上午 07:48
  • 在以上錯誤的複寫是沒有勾選ID的發行集,嘗試將複寫勾選ID在訂閱的時候成功,但我的需求是ID是不能勾選的欄位定義如下:

    [ID] [bigint] IDENTITY(1,1) NOT FOR REPLICATION NOT NULL。

    請問依我的需求該如何解決?

    2017年11月22日 上午 11:41
  • You should include ID, 'not for replication' means value of that column is not incremented by sql on subscriber when replication agent performs an insert operation.
    2017年11月22日 下午 02:27
  • 分別對A、B兩台SQL Server做同步,將A的新增交易同步到B,將B的新增交易同步到A。

    加入交易式發行集欄位id選項,A的資料是由電話交易寫入資料庫,觀察到A資料表的id是ex 60,寫到B資料表id也是60,現在有一個問題,若是A、B兩台的資料id都有1,就會造成同步錯誤,無法重覆相同索引值的錯誤,1.請問要怎麼解決?欄位定義還是

    [ID] [bigint] IDENTITY(1,1) NOT FOR REPLICATION NOT NULL。

    2017年11月23日 上午 09:43
  • Do you update table on subscriber? If yes, have to change identity seed and stepping on both side. If not, let snapshot truncate table on subscriber.
    2017年11月23日 下午 05:39
  • 發行集的資料是不會有update的,但我的需求是在A的新增交易同步新增到B,在B的新增交易同步新增到A。你的IF NOT,快照截斷訂閱者的表,沒有解決到我的問題。

    2017年11月24日 上午 10:41
  • You should use peer to peer replication in this case, and use different identity seed on each server like odd numbers on A and even numbers on B.
    2017年11月24日 下午 05:06
  • 如何在點對點發行集,設定「use different identity seed on each server like odd numbers on A and even numbers on B.」?
    2017年11月25日 上午 07:12
  • 我已找到use different identity seed on each server like odd numbers on A and even numbers on B的方法了。
    2017年11月25日 上午 08:44
  • 使用點對點發行集,在新增發行集成功,但在新增訂閱卻會出現錯誤,訊息為:

    點對點發行集僅支援參數值為replication support only,initialize with backup or initialize from lsn    的    symc_type

    參數。找不到訂閱。Microsoft SQL Server 錯誤21679。該怎麼解決?

    2017年11月28日 上午 10:03
  • You should create publication without snapshot and enable peer to peer, then copy db from publisher to subscriber, add subscriber in 'configure peer-to-peer topology' .
    2017年11月28日 下午 02:18
  • If don't want to copy whole table to subscriber, can use tablediff to sync data in replicated tables.
    2017年11月28日 下午 02:21
  • 為什麼我用交易式發行集不可以?

    我的目標是SQL A 新增的資料,複寫新增到SQL B。

                   SQL B 新增的資料,複寫新增到SQL A。

    設定每5分鐘的排程。

    而交易式發行集不是當發行集有INSERT/UPDATE資料時,在訂閱者同時可以看到INSERT/UPDATE資料嗎?

     

    2017年11月29日 上午 09:08
  • 我的目標是SQL A 新增的資料,複寫新增到SQL B。

                   SQL B 新增的資料,複寫新增到SQL A。

    設定每5分鐘的排程。

    使用條件是交易式發行集,

    刪選條件是SQL A發行集MACHINE_AREA='1'

                  SQL B發行集MACHINE_AREA='2'

    但是我到SQL B去COUNT MACHINE_AREA='1'的資料筆數,卻少於SQL A COUNT MACHINE_AREA='1'的筆數,為什麼會這樣?

    2017年11月29日 上午 09:39
  • 我是用SQL Server 2014 Management Studio找不到 Configure Distribution Wizard?
    2017年11月29日 上午 10:58
  • 為什麼我用交易式發行集不可以?

    我的目標是SQL A 新增的資料,複寫新增到SQL B。

                   SQL B 新增的資料,複寫新增到SQL A。

    設定每5分鐘的排程。

    而交易式發行集不是當發行集有INSERT/UPDATE資料時,在訂閱者同時可以看到INSERT/UPDATE資料嗎?

     

    Transaction replication is one way replication. You need either peer to peer or merge replication from what you said above.
    2017年11月29日 下午 03:23
  • 我改用合併式發行集,設定每隔5分鐘的排程去發行集和訂閱,錯出現如下兩個錯誤:

    錯誤1

    無法將結構描述指令碼 TABLE.sch  傳播至訂閱者。
    該處理無法讀取檔案  TABLE.sch ,因為作業系統錯誤 3。
    系統找不到指定的路徑。


    錯誤2

    嘗試執行的命令:
    call sp MSsetconflicttable 

    接近 IDX 之處的語法不正確。
    合併處理無法將快照集傳遞給訂閱者。

    該怎麼解決?

    2017年11月30日 上午 10:37
  • Both server are in same domain? Do you start sql services with domain account? Sql service accounts are in sysadmin on both servers? How do you set security in replication?
    2017年11月30日 下午 08:16
  • 合併式發行集與訂閱已成功,但前提條件是SQL A的TABLE已存在且有資料,SQL B的TABLE不存在。

    但我的目標是SQL A TABLE 存在有資料,SQL B TABLE 存在有資料。卻會出現以下錯誤:

    嘗試執行的命令:
    {call sp_MSsetconflicttable (N'TABLE_LOG', N'MSmerge_conflict_TABLELOG_TABLE_LOG', N'OTS-DEV-COOP', N'VO', N'TABLELOG')}

    錯誤訊息:
    接近 'IDX' 之處的語法不正確。

    合併處理無法將快照集傳遞給訂閱者。如果使用 Web 同步處理,可能是合併處理無法建立或寫入訊息檔。執行疑難排解時,請使用詳細資訊記錄來重新啟動同步處理,並指定寫入的輸出檔。

    2017年12月1日 上午 09:02
  • 我的SQL A與SQL B是跨網段的環境。

    若要是用PEER-TO-PEER REPLICATION,好像也不符合我的需求,因為有一個步驟要先將假設SQL A是發行者,必須要完整備份再還原到SQL B,再繼續設定。

    請問依照我的需求,該怎麼解決?

    2017年12月1日 上午 10:27
  • Domains are trusted? How about other questions I asked above? By the way, does your company have dedicated sql server dba?
    2017年12月1日 下午 06:11
  • 在測試環境目前是沒有設domain的,在正式環境還需要去詢問是否有設domain。

    我們公司是沒有DBA的,我之前問的問題請回覆?

    2017年12月4日 上午 03:16
  • Setup replication without domain is much more complicated, better to work with your local sql dba. 
    2017年12月4日 下午 02:14