Access 2010 和 SQL Server 2008 R2 错误 3157 超时

Posted

技术标签:

【中文标题】Access 2010 和 SQL Server 2008 R2 错误 3157 超时【英文标题】:Access 2010 and SQL Server 2008 R2 Error 3157 Timeout 【发布时间】:2017-02-07 10:23:44 【问题描述】:

我有一个大问题。当一个记录集应该保存时,我的一个 Access-Apps 失败了。要保存的代码是(按钮事件):

bolsichern = True
DoCmd.RunCommand acCmdSaveRecord

在我打开表单之前。我改变了一些东西,然后单击保存按钮。 x 次保存成功,但下一刻调试器启动。我单击调试并进入 VBA。这是黄色的:

DoCmd.RunCommand acCmdSaveRecord

但是当我按 F5 时代码运行,我的意思是保存成功。什么事?在某些日子里,没有关于此错误的用户电话。另一天,当我想保存时,每次都会出现错误。这意味着 Debug-Windows 会打开,我去 VBA 按 F5 就可以了!!!

当错误只是偶尔出现时,我如何才能找到原因?

请帮助我;-)

谢谢。

蔬菜

更新:

在另一个论坛中,一个用户也有同样的问题,也许这个问题比我的更重要:

We have a SQL 2008 R2 standard edition installed on Server 2008. We use an access front-end which connects to a SQL backend tables which are linked with the app.
Since last 2 weeks, we are continuously getting application freeze with the error - ODBC Error 3157: Update to linked table "###" failed
So far I have done the below:
1. Added primary key to the table as it had an identity column only
2. Relinked all the table and redistributed the front-end to the users
3. Ensure SQL files are shrunk
4. Checked network connections connecting the server to the switch
5. Checked SQL configuration manager to ensure right accounts are being used for the SQL services
This issue is very sporadic and it is now becoming frustrating as it has been ongoing for couple of weeks.
Can anyone shed some light on this as I am running out of possible ideas.

我尝试了所有这些点,但它仍然零星地不起作用:-(

【问题讨论】:

您应该提供错误消息文本吗? 消息是德语的。我应该提供吗? ODBC – 更新链接表 失败。 (错误 3157) 默认是保存,为什么要运行保存?@Fionnuala 我不明白你的意思!?它是 Access 中的表单,而不是 datagridview。有时我无法更改 SQL-Management-Studio 中列的值。还有一个关于超时的错误。
【参考方案1】:

在您进行保存时是否有其他用户在使用该系统?如果是这样,并且如果您的表单包含组合框,那么您可能会遇到与我们相同的问题,即组合框的存在导致 Access 锁定组合框中引用的表,然后在另一个用户尝试时导致错误写入或更新组合引用的表。

这意味着,例如,如果在销售行表单上有一个组合来选择库存项目,那么打开销售行表单将为所有其他用户锁定整个库存表,从而阻止插入/更新/删除。

我们可以始终如一地做以下事情来说明这个问题:

在系统的一个副本上打开一条销售线 - 该销售线有一个从 Stock 表中查找数据的组合 在另一个系统副本中打开库存项目 编辑并保存该库存项目 此时显示库存项目的系统挂起 然后关闭第一个副本的销售线 这似乎释放了 Stock 表上的锁定,因为 Stock 项目将立即保存在第二个副本中

我们通过创建对 stock 表的 SQL 传递查询并将其用作组合中的记录源来解决此问题,而不是像以前那样在 SQL 数据库中的 Stock 表上使用 Access 链接表。这样做会阻止表锁定的发生。

【讨论】:

以上是关于Access 2010 和 SQL Server 2008 R2 错误 3157 超时的主要内容,如果未能解决你的问题,请参考以下文章

在 SQL Server 2012 中作为 Varbinary(MAX) 的照片在 Access 2010 中导致错误 502753

从 sql server 读取 2010 年的 Access 数据库中的数据

ODBC:用于 MS Access 的 SQL Server 2008 驱动程序

SQL Server 2005 查询多个Access 数据库?

表迁移到 SQL Server 后,Access 无法筛选 Unicode 字符

我可以从 Microsoft Access 调用 SQL Server 的用户定义函数吗