快照复制的三个问题


关键词

快照复制的三个问题

摘要

IDENTITY 属性未传输到订阅服务器

因为该发布不允许使用可更新的订阅,当 IDENTITY 列被传输到订阅服务器时,不会传输 IDENTITY 属性。(例如,在发布服务器上定义为 INT IDENTITY 的列在订阅服务器上将定义为 INT。)

如果想将 IDENTITY 属性传输到订阅表,则必须进行如下操作:

    ? 使用 IDENTITY 属性和 NOT FOR REPLICATION 选项手工创建订阅表。您可以通过让 SQL Server 在应用快照之前执行自定义脚本来执行该操作。若要指定自定义脚本,请先创建发布,再创建脚本,然后在发布属性的“快照”选项卡上输入该脚本的名称。

IDENTITY 属性未传输到订阅服务器

因为该发布不允许使用可更新的订阅,当 IDENTITY 列被传输到订阅服务器时,不会传输 IDENTITY 属性。(例如,在发布服务器上定义为 INT IDENTITY 的列在订阅服务器上将定义为 INT。)

如果想将 IDENTITY 属性传输到订阅表,则必须进行如下操作:

    ? 使用 IDENTITY 属性和 NOT FOR REPLICATION 选项手工创建订阅表。您可以通过让 SQL Server 在应用快照之前执行自定义脚本来执行该操作。若要指定自定义脚本,请先创建发布,再创建脚本,然后在发布属性的“快照”选项卡上输入该脚本的名称。

    ? 设置名称冲突项目属性,以便 SQL Server 在订阅服务器上应用快照时不会除去现有的表。该属性在项目属性的“快照”选项卡上。

下列已发布表包含“标识”列:

       [dbo].[--test]
       [dbo].[--tmpSv]
       [dbo].[billlist]
       ……
说明:包含标识字段的表在快照复制这种不可更新的复制方式时,IDENTITY标识属性无法传输到订阅服务器上。如果想要传输这个属性,则要手工定义订阅表,并且设置NOT FOR REPLICATION属性。而且在设置复制的时候要配置名称冲突项目属性,以便在订阅服务器上应用快照的时候,不会把我们手工定义的表删除掉。

要求视图所引用的表

SQL Server 要求由已发布视图和索引视图所引用的所有表在订阅服务器上都可用。如果没有将引用的表发布为该发布中的项目,则必须在订阅服务器手工创建这些表。

下列视图和索引视图已在该发布中进行了发布:

       [dbo].[--v_orderOver]
       [dbo].[--v_orderPrc]
       [dbo].[v_orderOk]
       ……
说明:订阅的视图里面包含的表,必须在订阅服务器上可用。这里的可用是指一方面可能是手上在订阅服务器建立的,另一可能是由快照一起复制过去的。

需要存储过程引用的对象

SQL Server 要求发布的存储过程所引用的所有对象(如表和用户定义函数)在订阅服务器上都可用。如果引用的对象在此发布中未作为项目发布,则它们必须在订阅服务器上手工创建。

在此发布中发布了下列存储过程:

       [dbo].[add_salary]
       [dbo].[bf_add]
       [dbo].[bf_mdf]
       ……
说明:订阅的视图里面包含的表、视图、自定义函数等对象,必须在订阅服务器上可用。这里的可用是指一方面可能是手上在订阅服务器建立的,另一可能是由快照一起复制过去的。

 

要饭二维码

洪哥写文章很苦逼,如果本文对您略有帮助,可以扫描下方二维码支持洪哥!金额随意,先行谢过!大家的支持是我前进的动力!

文章的版权

本文属于“洪哥笔记”原创文章,转载请注明来源地址:快照复制的三个问题:http://www.splaybow.com/post/kuaizhao09470802012008.html

如果您在服务器运维、网络管理、网站或系统开发过程有需要提供收费服务,请加QQ:8771947!十年运维经验,帮您省钱、让您放心!
亲,如果有需要,先存起来,方便以后再看啊!加入收藏夹的话,按Ctrl+D

« SQL Server的cube操作符 SQL Server 2005 Express Edition »