在 Web 服务器上打开 SQL Server 连接时出错
Posted
技术标签:
【中文标题】在 Web 服务器上打开 SQL Server 连接时出错【英文标题】:Error Opening SQL Server Connection on Web Server 【发布时间】:2011-07-13 12:47:37 【问题描述】:这是我的错误:
错误 [28000] [Microsoft][ODBC SQL 服务器驱动程序][SQL Server]登录失败 对于用户'NT AUTHORITY\ANONYMOUS 登录'。错误 [28000] [微软] [ODBC SQL Server 驱动程序][SQL Server]登录 用户“NT”失败 权威\匿名登录'。
这是我在应用程序启动时的连接字符串:
MyConnection = New Odbc.OdbcConnection("DRIVER=SQL Server;SERVER=mysqlServer;Trusted_Connection=True;DATABASE=MyDatabase")
这是 Web.Config 的一部分:
<authentication mode="Windows"/>
<identity impersonate="false"/>
这是我的 IIS(7) 设置:
身份验证
匿名身份验证:已禁用 ASP.NET 模拟:已禁用 基本身份验证:已启用 摘要式身份验证:已禁用 表单身份验证:已禁用 Windows 身份验证:已启用连接字符串
MyDatabaseConnection:数据源=MySqlServer;初始目录=MyDatabase;集成安全=True LocalSqlServer: 数据源=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true【问题讨论】:
这里有些东西没有意义:如果您真的禁用了匿名身份验证,那么您似乎不太可能通过 IIS 的身份验证机制(没有 401 访问被拒绝)到正在查询数据库 我忘记提及的一件事是,当我使用本地主机从 (Visual Studio 2010) 运行应用程序时,sql 连接工作正常。所以换句话说,我确定连接字符串一定没问题。 【参考方案1】:我相信在这种情况下您可能不得不使用 ASP.Net Impersonation。
http://weblogs.asp.net/achang/archive/2004/04/15/113866.aspx
【讨论】:
如果我在 web.config 中设置正如 Zach 所说,您需要更改访问数据库的用户的凭据。
因此,您需要按照建议打开模拟,或者您应该更改用于运行您的网站的应用程序池所使用的用户 ID 和密码。 MSDN article 虽然有点旧,但仍然适用,应该可以帮助您做到这一点。
【讨论】:
【参考方案3】:应该使用什么用户帐户连接到数据库?您的用户帐户、SQL 服务器上的帐户、IIS 应用程序池帐户?
默认情况下,如果您不为连接字符串提供用户名和密码,.NET 将使用 AppPool 的凭据,正如 Simen 所说,它对 SQL 服务器没有足够的权限。
如果您想使用访问该网站的用户的凭据(可能是个坏主意),您需要像 Thyamine 所说的那样使用模拟,但如果您想使用为数据库设置的 SQL 帐户,那么您需要将该用户的用户名和密码放入连接字符串中。 (http://www.sqlstrings.com/SQL-Server-connection-strings.htm)
【讨论】:
【参考方案4】:如果您的 Web 应用程序在没有集成安全性的情况下运行。删除“允许匿名连接”安全选项。当 Web 服务器以 ANONYMOUS 身份进行身份验证时,请求将使用对您的 SQL Server 数据库没有足够权限的身份执行。
编辑:如果您在与客户端计算机不同的计算机上运行 Web 服务器,您可能需要调查服务器是否真正识别客户端计算机上使用的帐户。如果这些机器不是同一个安全域的一部分,你甚至可能不得不经历修改服务器的可疑程序
本地策略 --> 安全选项 --> 网络访问:本地帐户的共享和安全模型设置为:Classic - local users authenticate as themselves
并在服务器上创建具有相同名称和密码的用户帐户。
您可能还想调查服务器上的 http 日志
【讨论】:
在 Visual Studio 的 WebApp 解决方案中,我没有看到安全属性选项卡。我可以将它添加到 Web.Config 中吗? 忽略有关安全选项卡的内容。我在考虑早期 IIS 版本中的 UI。 如果我在 web.config 中设置以上是关于在 Web 服务器上打开 SQL Server 连接时出错的主要内容,如果未能解决你的问题,请参考以下文章
无法从 NET Core 2.2 Web API 连接到 docker sql server
无法从 Web 服务器连接到 SQL Server Express
Sql Server 配置管理器无法打开~!(无法连接到 WMI 提供程序)