Access 无法识别关联的 SQL Server 表中的标识列

上次更新时间:2020 年 1 月 23 日

问题

在 SQL Server 中创建指向包含标识列的表的链接时,Access 通常会将该列识别为自动编号列。

显示标识列被标识为自动编号字段

在 Office 365 和 Office 2016/2019 的 1912 版的当前频道内部版本 (16.0.12325.*) 中,不能正确识别标识列,反而是只会将其识别为数字。

标识列未被正确识别为自动编号

这种情况发生在通过用户界面或代码创建新链接时,但仅限于新链接。  现有链接不会受到影响,除非对链接进行刷新。

Access 使用正确的标识列标识来实现许多用途,因此这可能会以多种方式影响应用程序。

例如,标识列通常用于标识新添加的记录。  如果未使用标识列,Access 可能无法正确找到新添加的行,这将导致该行中的字段显示为 #Deleted。

显示系统表示已删除的字段的行

使用 RecordSet.LastModified 属性来检索上次添加的记录的值时,可能会看到类似的问题。 以下代码:

Set rst = CurrentDb().OpenRecordset("tblWithIdentityColumn")

rst.AddNew
rst!CompanyName = "Contoso"
rst.Update

rst.Bookmark = rst.LastModified
MsgBox rst!CompanyName

可能会导致错误 3167:

指示该记录已删除的错误。

在这两种情况下,系统将成功添加记录,但是 Access 将无法成功找到该记录。

Access 通常还会忽略直接更新标识列的尝试。 但是,在这些内部版本中,它会允许进行尝试但却无法成功,并且会生成一条错误消息:

[SQL Server] 当 IDENTITY_INSERT 设置为 OFF 时,无法在表 'tblOrders' 中插入标识列的显式值。(#544)

状态:已修复

版本 1912 现已提供此问题的修补程序。  可能需要显式强制更新以接收修补程序。  修复的内部版本号应为 12325.20344。

“预览体验计划 - 慢”(版本 2001)或“预览体验计划 - 快”(版本 2002)频道中尚未提供该修复程序, 如果你加入了这些频道,可能需要转到当前频道。

注意: 更改版本后,必须刷新任何受影响的链接,确保这些链接再次正常工作。

专家图标(大脑、齿轮)

询问专家

与专家联系,讨论 Excel 最新资讯、更新和最佳做法,并阅读我们的博客。

Microsoft 技术社区

社区图标

在社区中获取帮助

提出问题,查找来自支持人员、MVP、工程师和其他 Excel 用户的解决方案。

Office 论坛解答

功能请求图标(灯泡、想法)

推荐新功能

欢迎大家踊跃提出建议和反馈! 分享你的想法。 我们将认真倾听。

面向 Office 的 UserVoice

另请参阅

Access 中最新问题的修补程序或变通方法

扩展你的 Office 技能
了解培训
抢先获得新功能
加入 Office 预览体验计划

此信息是否有帮助?

谢谢您的反馈!

谢谢你的反馈! 可能需要转接到 Office 支持专员。

×