分布式Access前端上的SQL Server连接

我正在开发一个应用程序,需要链接到几个SQL Server表 . 我的Windows网络帐户有权连接到此服务器,但我不会是唯一一个使用此应用程序的人 . 我要发送给人们保存到他们的PC或者只是把它放在公司的共享驱动器上使用(我知道,有时会问问题) . 为用户分享Windows帐户是不方便的,因为他们需要注销并使用该应用程序,所以我想知道应用程序或ODBC连接文件本身是否可以存储凭据来访问该表 .

我应该将连接对象配置为使用除Windows登录信息之外的其他内容(可能是SQL服务器用户名/密码),并将连接对象存储在共享位置吗?我对此没有多少经验,也没有尝试过很多不同的解决方案,我愿意接受建议 .

感谢你的建议

回答(2)

2 years ago

正如对该问题的评论中所建议的,一种解决方案是

  • 在SQL Server上的Windows中创建用户组,

  • 为该组创建SQL Server登录名,

  • 在SQL Server中为该登录分配权限,

  • 然后根据需要添加或删除该组中的特定Windows用户 .

这样您就不需要为每个数据库用户弄乱各种SQL Server权限,并且您的应用程序可以使用Windows身份验证连接到SQL Server,因此您不必弄乱保存的SQL Server凭据(在连接字符串中,或其他地方) .

2 years ago

您当然可以在连接字符串中指定用户名和密码 - 如果您遇到连接字符串问题,强烈建议使用ConnectionStrings.Com - 他们的第一个Sql Server示例是

Server=myServerAddress;Database=myDataBase;User Id=myUsername;Password=myPassword;

问题是安全性,如果用户可以在配置文件中看到这一点,他们可以执行帐户可以执行的任何操作 . 如果执行此操作,则必须在应用程序中处理安全性 . 大多数处理自身安全性的应用程序必须在数据库表中创建用户和密码(最好不要存储密码,更不用说纯文本 - 建议使用单向散列) .

一个好的策略是创建一个具有众所周知的名称和密码的“登录用户”帐户,根本不为该帐户授予读/写等权限,并授予对单个存储过程的执行访问权限

IsLoginPermitted @ID, @PASS

成功时,IsLoginPermitted返回ID和PASS以供后续使用(当然这些对用户是隐藏的),然后根据这些创建新的连接字符串 .