[Guid] [uniqueidentifier] NULL, 这样是打钩的  [Guid] [uniqueidentifier] NOT NULL, 这样是不打钩的  我不清楚你是怎么加的字段 如果是用代码的话这样 应该可以的 如果是在表中添加字段的话 就只能手动去掉钩 不允许这个字段为空.

解决方案 »

  1.   

    是手动在表上加的字段,加完后,到publication里去看,这个新字段被自动打上勾了!
    没办法避免这种情况? 手动在publication里去掉这个新字段的勾,就会引起reinitialize subscriptions! 我改写了那些默认的replication stored procedures, 一reinitialize subscriptions,我就用重新改写一遍那些replication stored procedures!!
      

  2.   

    手动加的时候 不能把那个钩去掉吗?
    SET ANSI_NULLS OFF
    GO
    SET QUOTED_IDENTIFIER ON
    GO看一下存储过程里的这两个头  OFF 好像表示 为空关闭  换成 ON  看一下 ON 就打开了 试一下拉  应该每什么用吧!
      

  3.   

    创建发布 (使用sp_addpublication ) 的时候, 将 @replicate_ddl 设置为 0
    这样就不会发布 DDL 语句了, 你新加的列就不会被自动发布但这样做有一个不太好的地方, 如果你要修改列, 则因为修改也不会被发布, 所以会有些麻烦在配置了不发布 DDL 语句的情况下, 如果新加的列需要发布, 则可以使用 sp_repladdcolumn 这个语句来加列(删除列用 sp_repldropcolumn)
      

  4.   

    找到了。 发布属性里的订阅选项里有 Replicate schema changes一项,设为false就好了。这相对应于脚本里的
    @replicate_ddl 。
    在表里加了字段可以看到发布里有这个字段但没打上勾。我试图在表上修改被发布的一个列,sql报不能修改表,正被replication使用。那就是说不能修改被用于replication的字段了?