none
sql2005配置可更新订阅,在订阅服务器插入数据时提示错误。 RRS feed

  • 问题

  • 我的环境是windows2003+sql 2005 sp2企业版,用两台同样环境的服务器配置了可更新订阅(更新方式为“请求订阅”),在发布服务器上插入数据,订阅服务器已经可以自动更新数据,但在订阅服务器上插入数据就会提示

    点击确定后又提示
    但事实上插入的数据我是从原来表里面的数据复制修改的,出现错误后我重新把每个列的填入数据也提示这个错误,请问到底是什么问题呢?是不是哪里配置错误了?
    2010年4月8日 2:42

答案

  • 错误提示已经写得清楚了, 不支持在订阅服务器上插入text/ntext/image, 你可以考虑对应的字段类型改为 varchar(max)/nvarchar(max)/varbinary(max)类型

    http://technet.microsoft.com/zh-cn/library/ms151718.aspx

    订阅服务器中的更新

    • 即使订阅过期或处于不活动状态,订阅服务器中的更新仍会传播到发布服务器中。请确保删除或重新初始化此类订阅。
    • 如果使用 TIMESTAMP 或 IDENTITY 列,且将这些列按其基本数据类型进行复制,则不应在订阅服务器中更新这些列中的值。
    • 订阅服务器不能更新或插入 textntextimage 值,因为不能在复制更改跟踪触发器中从插入或删除的表中读取数据。同样,订阅服务器不能使用 WRITETEXT 或 UPDATETEXT 更新或插入 textimage 值,因为这些数据已被发布服务器覆盖。但可以将 textimage 列分区到单独的表中,并在一个事务中修改这两个表。
      若要在订阅服务器中更新大型对象,请分别使用 varchar(max)nvarchar(max)varbinary(max) 数据类型,而不要使用 textntextimage 数据类型。
    • 不允许对唯一键(包括主键)进行生成重复项的更新(例如,格式为 UPDATE <column> SET <column> =<column>+1 的更新),这些更新将因为违反唯一性而被拒绝。这是因为复制会将订阅服务器中所做的设置更新作为单独的 UPDATE 语句为每个受影响的行进行传播。
    • 如果订阅服务器数据库进行了水平分区,且分区中有在订阅服务器上存在而在发布服务器中不存在的行,那么订阅服务器将无法更新这些预先存在的行。试图更新这些行将返回错误。应当先从表中删除这些行,然后再插入这些行。
    2010年5月4日 4:45

全部回复

  • Can you post error message? Your link doesn't work.
    2010年4月8日 2:44
  • Please give me more information

     

    2010年4月30日 7:34
  • 我的msn是wubin.3@hotmail.com ,如果方便的话可以加我,我把错误信息发给你,或者留一个邮箱给我,我发到你邮箱里。谢谢。

    2010年5月2日 10:31
  • 我的msn是wubin.3@hotmail.com ,如果方便的话可以加我,我把错误信息发给你,或者留一个邮箱给我,我发到你邮箱里。谢谢。

    2010年5月2日 10:31
  • Why can't post here? You can remove server name and so from error message.
    2010年5月2日 14:41
  • 用两台同样环境的服务器配置了可更新订阅(更新方式为“请求订阅”),在发布服务器上插入数据,订阅服务器已经可以自动更新数据,但在订阅服务器上插入数据就会提示:

    未更新任何行

    未提交行3中的数据

    错误源:.net sqlclient data provider.

    错误信息:可更新的订阅:在订阅服务器上插入text/ntext/image值将为null。

    可更新的订阅:在订阅服务器上插入text/ntext/image值将为null

    可更新的订阅:在订阅服务器上插入text/ntext/image值将为null

    可更新的订阅:在订阅服务器上插入text/ntext/image值将为null

    可更新的订阅:在订阅服务器上插入text/ntext/image值将为null

    可更新的订阅:在订阅服务器上插入text/ntext/image值将为null

    请更改错误并重试,或按esc取消更改。

    点击确定后又提示:

    未更新任何行

    未提交行3中的数据

    错误源:.net sqlclient data provider.

    错误信息:rollback transaction请求没有对应的begin tracsaction。

    此会话中的活动事务已由另一个会话提交或终止。

    请更改错误并重试,或按esc取消更改。
    2010年5月2日 15:06
  • How did you set replication step by step? Posible to try with peer to peer replication to see if have same issue?
    2010年5月2日 22:11
  • 错误提示已经写得清楚了, 不支持在订阅服务器上插入text/ntext/image, 你可以考虑对应的字段类型改为 varchar(max)/nvarchar(max)/varbinary(max)类型

    http://technet.microsoft.com/zh-cn/library/ms151718.aspx

    订阅服务器中的更新

    • 即使订阅过期或处于不活动状态,订阅服务器中的更新仍会传播到发布服务器中。请确保删除或重新初始化此类订阅。
    • 如果使用 TIMESTAMP 或 IDENTITY 列,且将这些列按其基本数据类型进行复制,则不应在订阅服务器中更新这些列中的值。
    • 订阅服务器不能更新或插入 textntextimage 值,因为不能在复制更改跟踪触发器中从插入或删除的表中读取数据。同样,订阅服务器不能使用 WRITETEXT 或 UPDATETEXT 更新或插入 textimage 值,因为这些数据已被发布服务器覆盖。但可以将 textimage 列分区到单独的表中,并在一个事务中修改这两个表。
      若要在订阅服务器中更新大型对象,请分别使用 varchar(max)nvarchar(max)varbinary(max) 数据类型,而不要使用 textntextimage 数据类型。
    • 不允许对唯一键(包括主键)进行生成重复项的更新(例如,格式为 UPDATE <column> SET <column> =<column>+1 的更新),这些更新将因为违反唯一性而被拒绝。这是因为复制会将订阅服务器中所做的设置更新作为单独的 UPDATE 语句为每个受影响的行进行传播。
    • 如果订阅服务器数据库进行了水平分区,且分区中有在订阅服务器上存在而在发布服务器中不存在的行,那么订阅服务器将无法更新这些预先存在的行。试图更新这些行将返回错误。应当先从表中删除这些行,然后再插入这些行。
    2010年5月4日 4:45