国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > SQL Server > 正文

漫談SQL Server中的標識列(二)

2024-08-31 00:48:10
字體:
來源:轉載
供稿:網友
  • 網站運營seo文章大全
  • 提供全面的站長運營經驗及seo技術!

  • 這篇文章主要總結一下標識列在復制中的處理方法

    1、快照復制
       在快照復制中,通常無須考慮標識列的屬性。

    2、事務復制
       舉例:
       發布數據庫a,訂閱數據庫b,出版物為t_test_a,訂閱表為t_test_b
       create table t_test_a
     (id int identity(1,1),
      name varchar(50)
     )
       create table t_test_b
     (id int identity(1,1),
      name varchar(50)
     )
       
       在這種情況下,復制代理將無法將新行復制到庫b,因為列id是標識列,不能給標識列顯示提供值,復制失敗。
       這時,需要為標識列設置not for replication 選項。這樣,當復制代理程序用任何登錄連接到庫b上的表t_test時,該表上的所有 not
       for replication 選項將被激活,就可以顯式插入id列。

       這里分兩種情況:
       1、庫b的t_test表不會被用戶(或應用程序)更新
       最簡單的情況是:如果庫b的t_test不會被用戶(或應用程序)更新,那建議去掉id列的標識屬性,只采用簡單int類型即可。

       2、庫b的t_test表是會被其他用戶(或應用程序)更新

       這種情況下,兩個t_test表的id列就會發生沖突,舉例:
       在庫a中執行如下語句:
       insert t_test_a(name) values('tom')(假設id列為1)
       在庫b中執行如下語句:
       insert t_test_b(name) values('pip')(假設id列為1)
       這樣,就會在庫a和庫b的兩個表分別插入一條記錄,顯然,是兩條不同的記錄。
       然而事情還沒有結束,待到預先設定的復制時間,復制代理試圖把記錄"1 tom"插入到庫b中的t_test表,但庫b的t_test_b表已經存在

    id為1的列,插入不會成功,通過復制監視器,我們會發現復制失敗了。
       解決以上問題的方法有:
      (1)為發布方和訂閱方的標識列指定不同范圍的值,如上例可修改為:
         --確保該表記錄不會超過10000000
         create table t_test_a
     (id int identity(1,1),
      name varchar(50)
     )
       create table t_test_b
     (id int identity(10000000,1),
      name varchar(50)
     )
       (2)使發布方和訂閱方的標識列的值不會重復, 如
         --使用奇數值
         create table t_test_a
     (id int identity(1,2),
      name varchar(50)
     )
         --使用偶數值
         create table t_test_b
     (id int identity(2,2),
      name varchar(50)
     )
        這種辦法可推廣,當訂閱方和發布方有四處時,標識列屬性的定義分別如下
        (1,4),(2,4),(3,4),(4,4)

    3、合并復制
       采用事務復制中解決方法,只要使發布表和訂閱表標識列的值不重復既可。

     
    發表評論 共有條評論
    用戶名: 密碼:
    驗證碼: 匿名發表
    主站蜘蛛池模板: 容城县| 思南县| 买车| 安宁市| 彰武县| 军事| 温州市| 会东县| 石屏县| 岗巴县| 宝山区| 营山县| 肇东市| 紫金县| 马山县| 营口市| 贵港市| 扬中市| 涡阳县| 巩留县| 绍兴县| 新源县| 皮山县| 盐津县| 泊头市| 台江县| 石家庄市| 宝鸡市| 普定县| 澜沧| 淮安市| 宜君县| 大理市| 乌鲁木齐市| 弋阳县| 诸城市| 阜南县| 黄大仙区| 固原市| 扬中市| 邢台市|