如何锁定用户的MS-SQL DB,但仍然可以通过ODBC访问它?
我有一个正在通过ODBC连接访问的ms-access应用程序和ms-sql db。我试图迫使我的用户仅通过应用程序部分来更新数据,但是我不在乎他们是直接读取数据还是通过自己的自定义ms-access数据库读取数据(他们将其用于创建临时报告)。
我正在寻找的一种方法是使数据仅在使用我分发给他们的已编译.mde文件时才可编辑。我知道我可以使数据对于一般人群来说是只读的,对于某些用户来说是可编辑的。
有没有一种方法可以使ms-sql仅在他们通过我的固定mde访问数据时才使数据可编辑?
想过,是否有一种方法可以让ms-access以其他用户身份登录数据库(或者在连接后更改登录名)?
@Hyman
是的,它正在使用表格。我想做的就是在启动板/主菜单窗体弹出时让它切换用户一次。
@Peter,
这确实是我要去的方向。我还不确定如何切换到第二个ID。我并不担心密码会被窃听,用户都是内部用户,并且都在内部局域网上。如果他们可以嗅探该密码,则可以肯定地嗅探该密码以获取我的特权ID。
@一般没有人,
现在,它的安全性还不清楚。我给了使用者使用特殊的.mdb进行报告,这将使他们可以读取数据,但不能更新数据。他们不知道有关通过ODBC连接重新链接到表的信息。稍多一些具有ms-access / DB文化素养的用户可以通过我在几秒钟内完成的工作,并且有些人认为自己是DBA,因此他们最终会弄清楚这一点。
解决方案
回答
有一种方法可以对内部用户有效,但是可以被黑客入侵。我们为每个用户创建两个ID。一个是具有只读访问权限的报告ID。这是用户知道的ID:Fred / mypassword
第二个是可以进行更新的ID。该ID为Fred_app / mypassword_mangled。他们使用Fred登录到应用程序。当应用程序访问数据时,它使用应用程序ID。
这是可以嗅到的,但是对于许多应用程序来说已经足够了。
回答
应用程序允许链接表更新还是通过表格进行?听起来想法是使用具有不同角色的集中式用户。是的,我们可以更改用户,但是我可能会引入更多的编码,并且一旦我们开始添加越来越多的代码,其他解决方案(存储过程等)可能听起来更诱人。