FIX: sp_MSexpandnotbelongs 可能会调用在发布服务器由于无效评估的联接筛选

注意:这篇文章是由无人工介入的微软自动的机器翻译软件翻译完成。微软很高兴能同时提供给您由人工翻译的和由机器翻译的文章, 以使您能使用您的语言访问所有的知识库文章。然而由机器翻译的文章并不总是完美的。它可能存在词汇,语法或文法的问题,就像是一个外国人在说中文时总是可能犯这样的错误。虽然我们经常升级机器翻译软件以提高翻译质量,但是我们不保证机器翻译的正确度,也不对由于内容的误译或者客户对它的错误使用所引起的任何直接的, 或间接的可能的问题负责。

点击这里察看该文章的英文版: 300180
本文已归档。它按“原样”提供,并且不再更新。
错误 #: 352213 (SHILOH_BUGS)
症状
在合并复制中如果联接筛选器中的列名称为类似于一个可限定为类似于 USERID 或 USER_ID 的函数可能会导致删除 (通过 sp_MSexpandnotbelongs 完成) 在发布服务器上的扩展。由于发布者进行另一个调用 (它不应进行),这可能会影响在某种程度上的性能。
原因
设置合并复制时, 可以为如最大限度地减少的减少,从而在订阅服务器,和许多其他所需的存储空间的在网络中发送的数据量的各种原因指定联接筛选器。存储的过程 sp_MSsetupbelongssp_MSbelongssp_MSexpandbelongssp_MSexpandnotbelongs 用于确定的一组需要发布到订阅服务器基于指定筛选器的行。这些筛选器也可动态通过指定系统函数或用户定义的函数针对每个订阅者以不同的方式计算的。这也能提高性能,因为订阅服务器只接收该信息所需的基础的订阅的合并代理程序连接属性。

若要确定是否是动态的筛选器,在内部使用 LIKE 子句的搜索模式,进行检查。然而,在特定的条件下可能有 USERID,USER_ID,类似名称的列,这样上所使用的筛选器中。在这种情况下检查错误地计算结果为动态,解释为 USER_ID() 函数 USERID 或 USER_ID 列筛选器。这将导致由 sp_MSexpandnotbelongs 在发布服务器上删除的扩展。扩展的删除通常在订阅服务器上,但联接筛选器中的函数与它做是在发布服务器上,因为这些功能应该在发布者的上下文中计算。
解决方案
若要解决此问题,获得最新的 service pack,对于 SQL Server 2000。有关更多的信息请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
290211INF: 如何获取最新的 SQL Server 2000 Service Pack
重要提示: 该服务包,必须将应用于 SQL Server 的每个实例。
状态
Microsoft 已经确认这是 SQL Server 2000 中的问题。此问题 SQL Server 2000 Service Pack 1 中第一次已得到纠正。

警告:本文已自动翻译

属性

文章 ID:300180 - 上次审阅时间:01/16/2015 22:51:03 - 修订版本: 3.2

Microsoft SQL Server 2000 标准版

  • kbnosurvey kbarchive kbmt kbbug kbfix kbsqlserv2000sp1fix KB300180 KbMtzh
反馈