修复: 错误消息,当分发代理程序试图将快照应用于订阅服务器在 SQL 服务器 2005年:"必须声明标量变量"@Variable""

文章翻译 文章翻译
文章编号: 936534 - 查看本文应用于的产品
Bug #: 50001158 (SQL 修补程序)
展开全部 | 关闭全部

本文内容

症状

产生错误的场景如下:您可以在 Microsoft SQL Server 2005年中配置事务复制。在发布服务器上成功创建初始快照。在此方案中,当分发代理程序试图将快照应用于订阅服务器,您将收到以下错误消息:
错误: 137、 严重性: 15,状态: 2
必须声明标量变量"@Variable"。
在满足以下条件时,将发生此问题:
  • 事务复制包含基于具有计算列的表创建的文章。
  • 主键列进行排序后计算出的列进行排序。
  • syscolumns 系统表中,您可以查看主关键字列的列 ID 大于计算所得列的列 Id。
  • 发布使用并发快照处理。

原因

分发代理程序将创建一个存储的过程,将在订阅服务器上的数据。但是,该存储的过程有不正确的参数的数字。

解决方案

累积更新信息

累积更新 2 中首次发布了此问题的修补程序。有关如何为 SQL 服务器 2005 Service Pack 2 中获取此累积更新包的详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
936305 对于 SQL 服务器 2005 Service Pack 2 的累积更新包 2
注意 版本具有累积性的因为每个新修补程序版本包含的所有修补程序,并附带上一个 SQL Server 2005 的所有安全修补程序的修补都程序版本。Microsoft 建议您考虑应用包含此修补程序的最新修复程序版本。有关详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
937137 SQL Server 2005 生成 SQL 服务器 2005 Service Pack 2 发布后发布
为特定的 SQL Server 服务包创建 Microsoft SQL Server 2005年的修复程序。您必须向 SQL 服务器 2005 Service Pack 2 的安装应用 SQL 服务器 2005 Service Pack 2 的修补程序。默认情况下,任何 SQL Server service pack 中提供的修补程序包含在下一次 SQL Server service pack。

替代方法

若要变通解决此问题,请使用下列方法之一:
  • 当您创建文章的基础表时,确保主键列进行排序,先计算所得的列进行排序。
  • 使用本机的快照处理或数据库快照处理,而不是并发快照处理。

状态

Microsoft 已经确认这是在"适用于"一节中列出的 Microsoft 产品中的问题。

更多信息

例如,当您使用下面的语句创建文章的基础表时,将发生此问题:
CREATE TABLE [dbo].[test](
	[col1] [char](10) NOT NULL,
	[col2] [char](10) NOT NULL,
	[col_1_2]  AS ([col1] + [col2]),
	[ID] [int] IDENTITY(1,1) NOT FOR REPLICATION PRIMARY KEY NOT NULL
)

属性

文章编号: 936534 - 最后修改: 2013年9月3日 - 修订: 2.0
这篇文章中的信息适用于:
  • Microsoft SQL Server 2005 Standard Edition
  • Microsoft SQL Server 2005 Developer Edition
  • Microsoft SQL 2005 Server Enterprise
  • Microsoft SQL Server 2005 Enterprise X64 Edition
  • Microsoft SQL Server 2005 Enterprise Edition for Itanium Based Systems
  • Microsoft SQL Server 2005 Standard X64 Edition
  • Microsoft SQL Server 2005 Standard Edition for Itanium Based Systems
  • Microsoft SQL 2005 Server Workgroup
关键字:?
kbfix kbsql2005repl kbexpertiseadvanced kbqfe kbmt KB936534 KbMtzh
机器翻译
重要说明:本文是由 Microsoft 机器翻译软件进行的翻译并可能由 Microsoft 社区通过社区翻译机构(CTF)技术进行后期编辑,或可能是由人工进行的翻译。Microsoft 同时向您提供机器翻译、人工翻译及社区后期编辑的文章,以便对我们知识库中的所有文章以多种语言提供访问。翻译的文章可能存在词汇、句法和/或语法方面的错误。Microsoft 对由于内容的误译或客户对内容的使用所导致的任何不准确、错误或损失不承担责任。
点击这里察看该文章的英文版: 936534
Microsoft和/或其各供应商对于为任何目的而在本服务器上发布的文件及有关图形所含信息的适用性,不作任何声明。 所有该等文件及有关图形均"依样"提供,而不带任何性质的保证。Microsoft和/或其各供应商特此声明,对所有与该等信息有关的保证和条件不负任何责任,该等保证和条件包括关于适销性、符合特定用途、所有权和非侵权的所有默示保证和条件。在任何情况下,在由于使用或运行本服务器上的信息所引起的或与该等使用或运行有关的诉讼中,Microsoft和/或其各供应商就因丧失使用、数据或利润所导致的任何特别的、间接的、衍生性的损害或任何因使用而丧失所导致的之损害、数据或利润不负任何责任。

提供反馈

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com