1.SQLServer复制的向后兼容性是什么?
一、在SQL Server 2008中不推荐使用事务复制的订阅过期。
其实这个订阅保持期就好像是一个“有效期”或者叫做“质保期”。如果数据库系统未能够在有效的“质保期”内完成同步订阅工作,则这订约作业就会停用或者过期。
如假设最大的分发保持期为72小时(这是SQLServer数据库的默认设置,管理员可以根据实际情况来调整),如果订阅未能够在72小时内同步的话,而且分发数据库中还存在尚未传递到订阅服务器的更改,则订阅作业将会被分发服务器上运行的“清除分发”作业标记为停用。 此时数据库管理员如果要重新启用这个订阅功能的话,那么就必须重新初始化订阅。
而在数据库中,主要是这个sp_addpublication过程来控制这个订阅周期。在这个存储过程中,有一个@retention 属性。
这个属性主要用来设置订阅活动的保持期。 默认情况下这个属性的值为336小时。
如果订阅活动在保持期内不活动的话,则过期后系统就会将其自动删除。一般来说,这个值可以大于发布服务期使用的分发数据库的最大保持期。
也就是说,他们具有一定的独立性。如果数据库管理员想让订阅永远不过期的话,则只需要将这个参数设置为0即可。
不过根据微软的官方资料可以知道,这个参数的话在以后的版本中可能会被逐渐的淘汰。因为这个属性如果设置不当的话,会给合并复制造成一系列的不利影响,影响合并复制作业的稳定性。
为此数据库管理员在部署复制作业时,最好不要使用这个参数,以免跟后续的数据库版本不兼容。 如果一定要使用这个参数的话,那么最好能够遵循下面的一些建议。
一是如果采用合并复制,那么合并发布的保持期最好给一个宽限期。因为可能数据库部署在不同的时区,如果没有宽限期的话,那么这些分布在不同时区中的订阅服务器,运行起来就可能会出现问题。
为此笔者建议,通常情况下需要给其一个24小时的宽限期。即使现在企业用不到,但是随着后续规模的扩大,很有可能要在不同的国家设置数据库服务器。
如美国的企业,可能会在国内的办事处设置一台订阅服务器,以提高办公的效率。此时就应该为其设置24小时的宽限期。
二是尽量不要将这个参数设置为0。如果把这个参数设置为0,就表示没有保持期的限制。
虽然这从某个程度来讲,可以简化数据库管理员的维护工作。但是将这个参数的值设置为0,可能会产生一系列的负面效应。
如此时数据库系统将无法删除元数据等等。 为此,笔者的建议时,在实现复制服务时,最好不要采用这个参数。
如果一定要用的话,那么要给其设置一个合理的宽限期;并且最好不要将这个参数设置为0。虽然这不是强制性的规定,但是为了复制服务能够稳定运行,各位数据库管理员最好还是好好考虑笔者的这个建议。