【发布时间】:2012-07-30 00:45:04
【问题描述】:
我有一个用 MS Access 2007-2010 编写的应用程序,后端是一个 SQL 数据库。
构建新数据库后,当我在 Access 报告中查看 SQL 记录时,尝试编辑或输入新的输入结果时出现运行时错误 3197。
具体错误说: 自您开始编辑后,该记录已被其他用户更改
然后我有复制到剪贴板和删除更改选项,而保存记录是灰色的。 点击 Drop changes 会报错:
“运行时错误‘3197’ Microsoft Access 数据库引擎停止了该进程,因为您和其他用户正试图同时更改相同的数据。”
然后我查看 SQL 并使用 EXEC sp_who2 'Active' 查询数据库,我可以看到我用于 SQL 的用户名是 RUNNABLE 而 Access 应用程序使用的用户(在 Access VBA 中编码)被暂停(它被挂起的命令是 SELECT)。
我有其他数据库以相同的方式构建并且可以正常工作。我在使用 Access 运行时检查了工作数据库上的 sp_who2,并且因“有问题”数据库而被暂停的用户正在使用这个数据库。
我已经检查了两个数据库的权限,并检查了安全中用户的权限--> 登录,但没有看到任何我可以标记为问题的内容(也许其他人可以?)。
不知道为什么会发生这种情况以及为什么数据库被 SQL 用户锁定并且不允许 Access 用户更新相关记录。
谁能解释一下这个问题?
谢谢。
【问题讨论】:
-
您是否对 MS Access 数据库进行了压缩、修复和反编译?您是否在 SQL Server 中使用任何“不寻常”的日期格式?您说其他 Access 数据库还可以,它们是否可以链接到导致问题的相同表?您对新数据库和链接表有疑问吗?
-
新数据库与其他数据库具有相同的结构。我更改的唯一字段是几个 varchars,我将它们放大以适合所有文本。 “不寻常的日期格式”是什么意思?其他数据库使用相同的日期格式没有问题。当我在 Access 中选中一个对应于 SQL Server 中的位数据类型的框时,会出现错误消息(从我目前测试的结果来看)。起初,该位字段为 NULL,但即使我用 0 填充此字段,错误仍然存在。
-
谢谢,我已将所有位数据类型更改为 smallint 并且有效。
标签: ms-access-2010 user-permissions sql-server-2008r2-express