你目前正处于脱机状态,正在等待 Internet 重新连接

上已安装的 Microsoft 数据访问组件 2.8 的计算机,应用程序收到了不正确的值,标识列的从 SQL Server 2005 数据库

Support for Windows XP has ended

Microsoft ended support for Windows XP on April 8, 2014. This change has affected your software updates and security options. Learn what this means for you and how to stay protected.

Support for Windows Server 2003 ended on July 14, 2015

Microsoft ended support for Windows Server 2003 on July 14, 2015. This change has affected your software updates and security options. Learn what this means for you and how to stay protected.

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

点击这里察看该文章的英文版: 940569
症状
请考虑以下情形。您将创建一个 Microsoft SQL Server 2005 数据库中具有标识列的表。您可以配置合并复制表上。应用程序将 Microsoft ActiveX 数据对象 (ADO) 用来在表中插入行。然后,应用程序检索插入的行。但是,为标识列返回了不正确的值。

当运行应用程序的计算机已安装下列程序之一时,就会出现此问题:
  • Windows 2003 Server
  • Windows XP
  • Microsoft 数据访问组件 (MDAC 2.8) 2.8
在 Microsoft SQL Server 2000 数据库中不会发生此问题。
原因
复制过程将创建表中插入触发器。插入触发器时表中插入数据,使用 @ @ IDENTITYSCOPE_IDENTITY 函数而不是变量。因此,该 @ @ IDENTITY 变量可能会返回一个标识值不是在当前表中。
解决方案
若要解决此问题,安装在下面的 Microsoft 知识库文章中描述的修复程序:
961451FIX: 您可以收到了不正确的值时插入数据到一个表,该表包含标识列中使用 ActiveX 数据对象的应用程序使用客户端游标后,查询最后插入的标识值
注意已在较早版本的这篇文章中在"解决方案"一节中所述的修补程序由 961451 中描述的修补程序取代。
状态
Microsoft 已经确认这是在"适用于"一节中列出的 Microsoft 产品中的问题。
更多信息
SCOPE_IDENTITY 函数和 @ @ IDENTITY 变量返回当前会话中生成任何表中的最后一个标识值。但是,SCOPE_IDENTITY 函数返回的只在当前作用域内插入的值。@ @ IDENTITY 变量不会限制特定的作用域插入。

例如对于假定在数据库中包含一个 Table1 和一个 Table2。这两个表有标识列。insert 触发器是在 Table1 中定义的。当在 Table1 中插入行时,触发器 Table2 中插入行的一个副本。这种情况下涉及以下两个作用域:
  • 在 Table1 中的插入
  • 在 $ Table2 中的插入触发器
在此情况下 @ @ IDENTITY 变量和 SCOPE_IDENTITY 函数将返回不同的值在 Table1 中插入行时。@ @ IDENTITY 变量返回上一次的标识列值跨任何作用域中的当前会话。在本例中为 @ @ IDENTITY 变量返回 Table2 中插入的标识值。但是,SCOPE_IDENTITY 函数返回在 Table1 中, 插入的标识值,这是因为 SCOPE_IDENTITY 函数返回上一次插入在同一范围内的值。如果作用域中发生的对标识列所做的任何 INSERT 语句之前调用该函数,SCOPE_IDENTITY 函数将返回 NULL 值。

有关软件更新术语的详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
824684用于描述 Microsoft 软件更新的标准术语的说明

Warning: This article has been translated automatically

属性

文章 ID:940569 - 上次审阅时间:08/25/2009 16:09:56 - 修订版本: 2.0

Microsoft Windows Server 2003 Standard Edition, Microsoft Windows Server 2003 Enterprise Edition, Microsoft Windows Server 2003 Web Edition, Microsoft Windows Server 2003 Datacenter Edition, Microsoft Windows Server 2003, Standard x64 Edition, Microsoft Windows Server 2003, Enterprise x64 Edition, Microsoft Windows Server 2003, Datacenter x64 Edition, Microsoft Windows Server 2003, Enterprise Edition for Itanium-based Systems, Microsoft Windows Server 2003, Datacenter Edition for Itanium-Based Systems, Microsoft Windows XP Professional Edition, Microsoft Windows XP Home Edition, Microsoft Windows XP Professional x64 Edition, Microsoft Data Access Components 2.8

  • kbmt kbautohotfix kbwinxppresp3fix kbexpertiseinter kbwinserv2003postsp2fix kbbug kbfix kbhotfixserver kbqfe KB940569 KbMtzh
反馈