複製中的NOT FOR REPLICATION

2022-02-16 07:48:08 字數 1373 閱讀 2918

錯誤#1 10:51 2012-9-4

sp_msget_repl_commands 重複鍵插入

解答#1 修改distribution庫下sp_msget_repl_commands 儲存過程

declare @snapshot_seqnos table(subscription_seqno varchar(16) primary key),將varchar(16)改為varbinary(16)。

錯誤#2 20:51 2013-11-23

解答#2 手動在訂閱資料庫set identity_insert table on後插入資料,複製還是報這種錯

後來一想它呼叫的是sp_msins_table 儲存過程,檢視其內容,裡面確實沒有identity_insert選項,再仔細想想所有表都是這樣的,不可能都得乙個個這樣設定,會不會是id屬性有問題?一看,這張表確實沒有設成不用於複製

因此插入自增id值肯定報錯,所以最終原因鎖定在訂閱表id欄位,將其標識設為 是(不用於複製)

--環境sqlsever 2008r2

--11:38 2014/4/18 群裡看到討論複製對於自增列的影響,菠蘿提供乙個語句可以直接修改nfr屬性而不用重新建立表

--之前有針對主鍵為自增列應用於複製的情況糾結過(sql2000)。

1

usetgwuba

2create

table test(id int

identity(1,1) not

null)3

--新增/去除not for replication屬性

4alter

table test alter

column id add

notfor

replication

5alter

table test alter

column id drop

notfor

replication

6select name,crdate,refdate from sysobjects where name=

'test'--

返回表建立的時間

右擊資料表->設計->標識規範-不用於複製,設定為'是',儲存(需取消選項 工具->選項->設計->表設計器和資料庫設計器->阻止儲存要求重新建立表的更改)

依據返回的crdate間接判斷表是否重新建立

用語句更改不會重新建立表;用表設計器調整儲存,實際是刪除原始表再建立表。

python中的複製

複製 python中複製有三種 引用淺複製 深複製 引用引用操作是用 來賦值,兩個變數使用同一塊位址區域,使用相同的資料 測試a np.arange 12 b a print b is a b.shape 3,4 print a.shape print id a print id b 結果如下tru...

js中的深複製與淺複製

二者的區別 深複製只複製物件的值,在複製後指向不同的位址,但兩個物件的值相同 淺複製複製的是物件的位址,在複製後指向同乙個位址,兩個物件的位址與值都相同 淺複製 let a let b a console.log a console.log b 如果改變b的name屬性,會發現a的name屬性也會改...

C 中的深複製與淺複製

有的時候,我們習慣性的將乙個引用型別交給另乙個引用型別,此時我們修改某一引用,便會帶來所有引用值的改變。其實這是一種淺複製,那麼為了更好的實現直接賦值,而又避免出現上面這種情況。最好採用深複製,以下內容 自 c 中對於資料的複製機制雖然簡單但是容易讓人誤解。c 資料型別大體分為值型別 value t...