首页 > 解决方案 > MS Access 和 SQL Server 连接(可信来源与传递登录凭据)

问题描述

我目前有一个拆分的 Access 数据库,大约有 80 个注册用户。我们现在正在将后端迁移到 SQL Server。我为一个非常大的实体工作,该实体已经建立了 IT 策略,因此由于需要批准,在 SQL 服务器端进行一些更改可能需要一段时间。话虽如此,我们正在寻找一种可能在 Access 前端执行此操作的方法,因此我们不必更改 SQL Server 中的任何内容,但我还没有找到方法。所以这就是我想要做的..

我需要 Access 前端使用服务帐户(仅为此数据库设置的单独 Windows 帐户)连接到 SQL 服务器。我可以使用 Access 中的 VBA 连接字符串使用我的个人帐户进入 SQL 服务器,该连接字符串使用受信任的源选项。如果我使用服务帐户登录 Windows,我还可以使用 VBA 使用受信任的源连接到 SQL Server。值得注意的是,SQL server 账号认证设置为使用 Windows 认证,而不是 SQL Server 认证。但是,如果我尝试通过传递用户名和密码凭据(不使用受信任的来源)使用 VBA 连接到 SQL Server,它总是被拒绝。

所以基本上我的问题是:

  1. 如果 SQL Server 帐户设置为使用 Windows 身份验证而不是 SQL Server 身份验证,我可以通过 MS Access 将用户名和密码传递给 SQL Server 并获得访问权限吗?或者是访问此 SQL 帐户以使用可信来源的唯一方法。

  2. 如果我只能使用受信任的来源,您有什么方法可以让我的 80 个用户在登录到他们自己的 Windows 帐户时通过一个 Windows 服务帐户访问 SQL Server?

谢谢你。

标签: sql-serverms-accessodbcwindows-authentication

解决方案


如果使用 Windows 身份验证,则 sql server 权限和设置由您的域服务器及其登录控制。您根本不需要做任何事情,除了确保每个用户都拥有数据库的权限。换句话说,活动目录是您设置每个用户权限的地方。您不能模拟其他用户登录(例如在 IIS 服务中可以)。因此,您在活动域(Windows 身份验证)登录系统中分配表权限等。您无需在访问端做任何事情。如果使用 sql 登录,您可以执行此操作而无需重新链接表,并且权限是 sql server 分配和基于的

使用 Windows 身份验证的整个想法是,您不希望也不需要担心某些单一应用程序和用户权限的麻烦。因此,您可以通过活动域控制器(Windows 身份验证登录)设置他们在 sql server 上可以看到的内容。所以没有必要让用户登录或关闭 sql server,因为他们可以登录到他们的工作站这一事实是如何控制权限的。因此,如果不授予特定用户对 sql 服务器的权限,那么您可以使用域控件和活动目录来设置和控制它。

o,当然,在实践中,不会为每个用户授予权限,但当然会授予某种类型的安全组(如全职员工)权限,因此属于该组成员的所有 80 个用户都将拥有权限. 或者可能有一个销售组或计划安全组。因此,您只需要(并且应该)将权限分配给安全组,而不是个人用户,因为这对系统管理员来说太费力了。

因此,哪些用户有权访问数据库现在将由活动目录和所谓的域控制器控制。如果您可以冒充系统上的其他用户是没有意义的,因为如果您可以“成为”任何旧用户并在您的系统上登录,那么在这样的系统上几乎不会存在安全性。

因此,您无需在此处执行任何操作,只需确保授予每个用户登录的权限,然后他们将有权使用 sql server。

如前所述,在实践中,此类权限通常授予安全组,并且它的工作量太大,无法在每个用户的基础上尝试和管理它。


推荐阅读