我在Microsoft Dynamics GP中发生了一个问题,我正在研究是否这是原因,但这可能是访问SQL Server问题。 GP将数据存储在SQL Server中,MS Access用于访问表数据。生产数据库中似乎缺少某些数据。不幸的是,我不知道Access正在做什么,因为这没有透露给我。一个简单的解决方案是告诉他们停止使用Access来验证数据是否仍然缺失,但在建议之前我想知道任何记录的问题。
因此,为了对正在发生的事情做出最佳猜测,Access在与SQL Server连接时作为后端做了什么?它会锁定桌子吗?必须采取哪些措施才能导致数据丢失或删除?如果Access是原因,应采取哪些步骤来解决它?
答案 0 :(得分:3)
您是否打算允许Access更改或删除数据?
如果没有,您是否考虑过设置一个供Access使用的用户ID,允许只读访问(没有双关语)?
在任何情况下,SQL Server最佳做法是确保用户帐户具有满足业务要求所需的最小访问权限。请不要给每个人提供一个空白密码的帐户。
编辑:
考虑像SQL Server Management Studio这样的Access,换句话说,只要您的帐户具有允许您这样做的权限,就可以使用几乎无限制的方式查询和更改数据库的交互式工具。由于它是一个可以拉出表格的交互式环境,因此删除行就像点击该行并按下删除键一样简单。类似地,更改数据值就像单击该行和列并键入新值一样简单。
当然,删除内容非常简单,只需偶然点击删除键即可。
当您向用户提供此类工具和没有访问限制的帐户时,无论是出于意图,意外还是其他方式,数据最终都会被更改,这并不让我感到惊讶。
答案 1 :(得分:2)
通常使用链接表(即ODBC / OLEDB连接)在MSACCESS中访问SQL Server数据。虽然这项技术有些陈旧,并且没有完全没有错误,但我无法想到可能导致此问题的基础技术中的任何内容。
普通用户是否使用ODBC数据源或包含SQL Server数据库管理员ID和密码的连接字符串(即不受限制的权限)访问这些表?如果是,那么缺失的数据将是给定的。删除打开的MSACCESS链接表中的行就像在Excel中删除行一样简单。
MSACCESS / SQL连接中的记录锁定通常是乐观的(除非您更改它)。在SQL Server 2000的旧时代,这意味着如果两个人同时编辑同一个记录,那么最后保存的人赢了(默默地)。现在,最后一个人保存被告知其他人在进行更改时编辑了记录,并提供了两个选项:放弃我的更改,或覆盖其他人的更改。
在任何情况下,提供对表的只读访问都可以减轻很多胃灼热。