本文介绍了一项改进,允许将作为事务复制发布中的项目包含的表从数据库和发布中除去。 只有在将表作为文章的所有发布的 " allow_drop " 属性设置为 TRUE 时,才能删除表。 如果对于包含该项目的任何发布,将该属性设置为 FALSE ,则 删除表 操作将失败,并报告无法删除已复制的文章。如果 放置表 DDL 受发布支持,则 删除表 操作将从发布和数据库中删除表。 日志读取器代理将发布已删除表的分发数据库的清理命令,并执行发布者元数据的清理操作。 如果日志读取器未处理出所有引用已除去的表的日志记录,则它将忽略与已删除的表相关联的新命令。 已处理的记录将发送到分发数据库。 如果分发代理在日志读取器清理已过时(已删除)的文章之前对其进行处理,则可能会在订阅者数据库上应用它们。启用对出版物的 drop table 支持的命令:exec sp_changepublication @publication = '<Publication Name>', @property = 'allow_drop', @value = 'true' 创建出版物时启用 drop table 支持的命令:exec sp_addpublication @publication = '<Publication Name>', ..., @allow_drop = N'true' Allow_drop属性的默认值设置为False。
解决方案
此问题已在 SQL Server 的以下累积更新中修复:
SQL Server 的每个新的累积更新均包含以前的累积更新中包含的所有修补程序和所有安全修补程序。 查看 SQL Server 的最新累积更新:
服务包信息此功能首先在 SQL Server 的以下 service pack 中引入:
关于 SQL Server 的 Service packService Pack 具有累积性。 每个新 Service Pack 除了包含所有新修复程序外,还包含以前 Service Pack 中的所有修复程序。 我们建议为该服务包应用最新的服务包和最新的累积更新。 您无需在安装最新服务包之前安装以前的服务包。 使用以下文章中的表1查找有关最新服务包和最新累积更新的详细信息。如何确定 SQL Server 及其组件的版本、版本和更新级别