MS Access 和 SQL Server 连接(可信来源与传递登录凭据)
Posted
技术标签:
【中文标题】MS Access 和 SQL Server 连接(可信来源与传递登录凭据)【英文标题】:MS Access and SQL Server Connection (Trusted Source vs Passing Login Credentials) 【发布时间】:2021-09-15 14:35:42 【问题描述】:我目前有一个拆分的 Access 数据库,大约有 80 个注册用户。我们现在正在将后端迁移到 SQL Server。我为一个已经建立 IT 策略的非常大的实体工作,因此由于需要批准,因此在 SQL 服务器端进行一些更改可能需要一段时间。话虽如此,我们正在寻找一种可能在 Access 前端执行此操作的方法,因此我们不必更改 SQL Server 中的任何内容,但我还没有找到方法。所以这就是我想要做的..
我需要 Access 前端以使用服务帐户连接到 SQL 服务器(为该数据库设置的单独 Windows 帐户)。我可以使用 Access 中的 VBA 连接字符串使用我的个人帐户进入 SQL 服务器,该连接字符串使用受信任的源选项。如果我使用服务帐户登录 Windows,我还可以使用 VBA 使用受信任的源连接到 SQL Server。值得注意的是,SQL server 账号认证设置为使用 Windows 认证,而不是 SQL Server 认证。但是,如果我尝试通过传递用户名和密码凭据(不使用受信任的来源)使用 VBA 连接到 SQL Server,它总是被拒绝。我假设如果 SQL Server 设置为 SQL Server 身份验证,它将允许我发送用户名和密码,但因为它设置为 Windows 身份验证,它不会接受除我当前的 Windows 帐户之外的任何内容。
所以基本上我的问题是:
如果 SQL Server 帐户设置为使用 Windows 身份验证而不是 SQL Server 身份验证,我能否通过 MS Access 将用户名和密码传递给 SQL Server 并获得访问权限。或者是访问此 SQL 帐户以使用可信来源的唯一方法。
如果我只能使用受信任的来源,您有什么方法可以让我的 80 位用户在登录到他们自己的 Windows 帐户时通过一个 Windows 服务帐户访问 SQL Server?
谢谢。
【问题讨论】:
基本上,不... 如果 SQL Server 实例设置为仅使用 Windows 身份验证,那么对于 Access 前端,您几乎只能在 SQL Server 端添加用户。否则,您必须建立一个中间层并与之进行一些严肃的游戏。 除了将身份验证类型从 windows auth 切换到 SQL server auth 之外,还有什么可以在 SQL Server 端完成吗? 【参考方案1】:如果使用 Windows 身份验证,则 sql 服务器权限和设置由您的域服务器及其登录控制。您根本不需要做任何事情,除了确保每个用户都拥有数据库的权限。换句话说,活动目录是您设置每个用户权限的地方。您不能模拟其他用户登录(例如在 IIS 服务中可以)。因此,您在活动域(Windows 身份验证)登录系统中分配表权限等。您不必在访问端做任何事情。如果使用 sql 登录,则无需重新链接表即可执行此操作,并且权限是 sql server 分配和基于的
使用 Windows 身份验证的整个想法是,您不希望也不需要担心某些单一应用程序和用户权限的麻烦。因此,您可以通过活动域控制器(Windows 身份验证登录)设置他们在 sql server 上可以看到的内容。所以没有必要让用户登录或关闭 sql server,因为他们可以登录到他们的工作站这一事实是如何控制权限的。因此,如果某个特定用户不被授予对 sql server 的权限,那么您可以使用域控件和活动目录来设置和控制它。
o,当然,在实践中,不会为每个用户授予权限,但当然某些类型的安全组(如全职员工)会被授予权限,因此所有 80 个用户都是该组的成员会有权利。或者可能有一个销售组或计划安全组。因此,您只需(而且应该)为安全组分配权限,而不是个人用户,因为这对系统管理员来说太费力了。
因此,哪些用户有权访问数据库现在将由活动目录和所谓的域控制器控制。如果您可以冒充系统上的其他用户是没有意义的,因为如果您可以“成为”任何旧用户并登录您的系统,那么这样的系统几乎不会存在安全性。
因此,您不必在此处进行任何操作,只需确保授予每个登录用户的权限,然后他们将有权使用 sql server。
如前所述,在实践中,此类权限通常授予安全组,而尝试在每个用户的基础上进行管理的工作量太大。
【讨论】:
以上是关于MS Access 和 SQL Server 连接(可信来源与传递登录凭据)的主要内容,如果未能解决你的问题,请参考以下文章
通过 MS Access 例程更新 SQL Server(内部连接错误)
MS Access 给出 SQL Server 错误“登录超时已过期”,然后连接成功
从 MS SQL SERVER 和 MS ACCESS 调用存储过程的结果之间的差异
如何同步/更新从 MS Access 到 SQL Server 的数据库连接