如何锁定用户的 MS-SQL 数据库,同时仍可通过 ODBC 访问它?
-
09-06-2019 - |
题
我有一个 ms-access 应用程序,它通过 ODBC 连接访问 ms-sql 数据库。我试图强制我的用户更新数据 仅有的 通过应用程序部分,但我不关心他们是直接读取数据还是通过自己的自定义 ms-access 数据库(他们使用它来创建临时报告)。
我正在寻找一种方法,使数据仅在使用我分发给他们的已编译 .mde 文件时才可编辑。我知道我可以使数据仅供一般人群读取,并可供特定用户编辑。
有没有办法让 ms-sql 使数据可编辑,只有当他们通过我的罐装 mde 访问它时?
想一想,有没有办法让 ms-access 以不同的用户身份登录数据库(或在连接后更改登录名)?
@杰克,
是的,它使用表格。我想做的只是当我弹出启动板/主菜单表单时切换用户一次。
@彼得,
这确实是我前进的方向。我还没有确定的是如何切换到第二个 ID。我不太担心密码被嗅探,用户都是内部用户,并且位于内部 LAN 上。如果他们可以嗅出该密码,那么他们当然可以嗅出我的特权 ID。
@一般来说没有人,
现在它的安全性是默默无闻的。我为用户提供了一个特殊的 .mdb 来进行报告,让他们读取数据,但不能更新数据。他们不知道如何通过 ODBC 连接重新链接到表。稍微懂一点 ms-access/DB 的用户可以在几秒钟内绕过我所做的事情 - 并且有一些人想象自己是 DBA,所以他们最终会弄清楚的。
解决方案
有一种方法可以做到这一点,对内部用户有效,但可能会被黑客攻击。您为每个用户创建两个 ID。一种是具有只读访问权限的报告 ID。这是用户知道的 ID:弗雷德/我的密码
第二个是可以进行更新的ID。该 ID 是 Fred_app / mypassword_mangled。他们通过 Fred 登录到您的应用程序。当您的应用程序访问数据时,它使用应用程序 ID。
这可以被嗅探,但对于许多应用程序来说这已经足够了。
其他提示
您的应用程序是否允许链接表更新或是否通过表单?听起来您使用具有不同角色的集中用户的想法是可行的方法。是的,您可以更改用户,但我可能会引入更多编码,一旦您开始添加越来越多的代码,其他解决方案(存储过程等)可能听起来更有吸引力。