当两者都是不同的机器时从 IIS 连接到 MS SQL

当两者都是不同的机器时从 IIS 连接到 MS SQL

当两者都在不同的机器上时,如何从 IIS 连接到 MS SQL。

MS SQL 配置为 Windows 身份验证。

我越来越:

用户 '' 登录失败。该用户未与受信任的 SQL Server 连接关联。描述:执行当前 Web 请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其在代码中起源位置的更多信息。

Exception Details: System.Data.SqlClient.SqlException: Login failed for user ''. The user is not associated with a trusted SQL Server connection.

如何正确设置身份验证?

答案1

您希望向 SQL Server 验证谁的身份?IIS 应用程序池身份,还是 Web 客户端用户身份?换句话说,您是否在 IIS/ASP 中模拟?当您说“IIS”时,您指的是某种形式的 ASP/ASP.Net 进程/应用程序池,对吗?

如果您不进行模拟,那么 SQL 将验证您的应用程序池身份。如果您的应用程序池以域用户身份运行,则它将是该域用户。如果应用程序池以网络服务或 LocalSystem 身份运行,则它将是主机身份(domain\hostname$ 帐户)。如果应用程序池以本地用户或本地服务身份运行,则它不受支持,您必须使用一个受支持的身份。

如果您进行模拟,那么您实际上是在委派客户端用户身份,为此您需要启用 IIS/ASP 进行约束委派。有很多文献介绍如何做到这一点:

当然,IIS 和 SQL Server 都应该是域的成员,并且它们之间存在信任关系,否则就无法进行身份验证(相同的用户/密码“技巧”是一种可怕的黑客行为)。

一旦你弄清楚了身份验证到底应该针对谁,你可以采取以下步骤在 SQL Server 中允许授权,这些步骤是常规步骤(创建登录,授予适当的权利,创建用户,授予适当的权利)。

顺便提一下,代码不应该让异常得不到处理。也许是时候艾尔玛

答案2

根据 SQL Server 的版本,您可能这次错过了启用远程连接的功能:http://support.microsoft.com/kb/914277

此外,您不应使用您的应用进行测试,而应使用 Management Studio 或 Management Studio Express 进行测试。您的应用目前只是在方程式中添加了另一个变量因素,因此首先我们需要确定您可以使用已知良好的东西从远程计算机成功连接。一旦确认这一点,我们就可以重新使用 IIS 并从那方面解决问题。

答案3

我认为这取决于您使用什么语言编写 Web 应用程序。它是否有关于数据访问方法(如 ADO 或类似方法)的文档?

答案4

我在两台机器上创建了一个同名用户。设置 IIS 池由该用户运行,并将用户分配给另一台服务器上的 SQL 组。

迄今有帮助。

相关内容