在Web服务器上打开SQL Server连接时出错

时间:2011-03-11 14:06:14

标签: asp.net iis webserver connection-string sqlconnection

这是我的错误:

  

错误[28000] [Microsoft] [ODBC SQL   服务器驱动程序] [SQL Server]登录失败   对于用户'NT AUTHORITY \ ANONYMOUS   LOGON”。错误[28000] [微软] [ODBC   SQL Server驱动程序] [SQL Server]登录   用户'NT失败了   AUTHORITY \ ANONYMOUS LOGON'。

这是应用程序启动时的连接字符串:

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:Data Source = MySqlServer; Initial Catalog = MyDatabase; Integrated Security = True
  • LocalSqlServer:data source =。\ SQLEXPRESS; Integrated Security = SSPI; AttachDBFilename = | DataDirectory | aspnetdb.mdf; User Instance = true

4 个答案:

答案 0 :(得分:0)

我相信在这种情况下你可能不得不使用ASP.Net Impersonation。

http://weblogs.asp.net/achang/archive/2004/04/15/113866.aspx

答案 1 :(得分:0)

如果您的Web应用程序在没有集成安全性的情况下运行删除“允许匿名连接”安全选项。当Web服务器以ANONYMOUS身份验证时,将使用对SQL Server DB没有足够权限的标识执行请求。

编辑:如果您在与客户端计算机不同的计算机上运行Web服务器,则可能需要调查服务器是否实际识别客户端计算机上使用的帐户。如果计算机不属于同一安全域,您甚至可能需要经历可疑的修改服务器的过程 本地政策 - &gt;安全选项 - &gt;网络访问:本地帐户的共享和安全模型设置为:Classic - local users authenticate as themselves并在服务器上创建具有相同名称和密码的用户帐户。

您可能还想调查服务器上的http日志

答案 2 :(得分:0)

应使用哪个用户帐户连接数据库?您的用户帐户,SQL服务器上的帐户,IIS应用程序池帐户?

默认情况下,如果您不为连接字符串指定用户名和密码,.NET将使用AppPool的凭据,而Simen表示该凭据对SQL Server没有足够的权限。

如果你想使用访问网站的用户的凭据(可能是个坏主意),你需要像Thyamine所说的那样使用模拟,但是如果你想使用为数据库设置的SQL帐户,那么您需要将该用户的用户名和密码放入连接字符串中。 (http://www.sqlstrings.com/SQL-Server-connection-strings.htm)

答案 3 :(得分:0)

正如Zach所说,您需要更改访问数据库的用户的凭据。

因此,您需要按照建议打开模拟,或者应更改用于运行网站的应用程序池使用的用户ID和密码。这个MSDN article虽然有点陈旧,但仍然适用,应该可以帮助你做到这一点。