【问题标题】:Concurrency error with MS-Access Linked TablesMS-Access 链接表的并发错误
【发布时间】:2012-10-15 17:33:58
【问题描述】:
我正在通过 MS Access Linked Tables 将表链接到 SQL 2008R2 DB。
当我想更改底层 SQL 表中包含多个位字段的 Access 链接表中的数据时,我收到此警告:
自您开始编辑后,该记录已被其他用户更改
它。如果您保存记录,您将覆盖其他的更改
用户自制
当表中只有一个位字段时,我没有任何问题。恕我直言,这真是一个奇怪的错误。有没有其他人遇到过这种情况并偶然找到了解决方法?
【问题讨论】:
标签:
sql-server
ms-access
sql-server-2008-r2
linked-tables
【解决方案1】:
我在使用 SQL 处理链接表时遇到过此类问题。我不确定为什么您会特别看到位字段的问题。尝试将数据类型为时间戳 (rowversion) 的“ts”列添加到表中,然后在 Access 中重新链接。
【解决方案2】:
我知道这是一个老问题,但也许我的回答会对其他人有所帮助,因为我曾在相同和其他类似的问题上苦苦挣扎。
我遇到了类似的错误,并且大部分都能够绕过它。可能有帮助的一件事是在数据库上使用 SQL Profiler,并在您尝试添加新行时观察 Access 发出的 SQL 命令。
几件事要检查..
1)验证您在表中设置了一个 ID 列作为主键和自动编号
2)如果这涉及到另一个表之间的主/子关系,在Access数据库工具“关系”中,指定这些类型之间的关系和连接类型。
3)如果表之间存在连接,则在查询中公开主列和外部列。
使用 SQL Profiler,我会看到它会在哪里尝试根据除主键之外的其他列来查找要更新的行。例如
更新表
放 ...
其中 id = 5 和 data1 = somevalue 和 data2 == othervalue
这样做时,我有时会遇到同样的错误,因为我可能在新行中编辑了其他值,因此复杂的 where 子句会失败。您想要的是让更新完全依赖于主键。