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

时间:2013-11-12 19:50:10

标签: sql-server ms-access

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

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

感谢您的建议

2 个答案:

答案 0 :(得分:1)

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

  • 在SQL Server上的Windows中创建用户组,
  • 为该组创建SQL Server登录名
  • 将SQL Server中的权限分配给该登录名
  • 然后根据需要添加或删除该组中的特定Windows用户。

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

答案 1 :(得分:0)

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

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

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

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

IsLoginPermitted @ID, @PASS

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