【问题标题】:ASP.NET accessing a SQL Server in a different serverASP.NET 访问不同服务器中的 SQL Server
【发布时间】:2011-03-25 21:11:11
【问题描述】:

我安装了一个新的 Web 应用程序,它可以访问不同服务器中的 SQL Server 数据库。我正在使用 Windows 身份验证并收到以下错误:

用户 XXX 登录失败

当我尝试在web.config 文件中设置identity impersonate="true" 时,它只会引发错误

匿名用户登录失败

另外,我正在使用表单身份验证来验证来自我的网站的用户并使用不同的应用程序池。

更新:连接字符串基本上是这样的:

Data Source=myServerAddress;Initial Catalog=myDataBase;Integrated Security=SSPI;

更新:

我的虚拟目录启用了匿名身份验证和 Windows 身份验证。

【问题讨论】:

  • 请向我们展示您的连接字符串!我们无法阅读您的屏幕(也无法阅读您的思想).....您需要帮助我们帮助您¨
  • IIS 已配置为用于您的站点在网络帐户(来自 Active Directory,而不是本地计算机帐户)下运行的帐户是否对 SQL Server DB 具有安全权限。 IIS 默认使用本地帐户运行,这意味着无法在 SQL Server 登录时使用 Windows 身份验证,因为 SQL Server 框不会看到该帐户 b/c 它是本地的网络服务器。
  • @marc_s:基本上像这样:“Data Source=myServerAddress;Initial Catalog=myDataBase;Integrated Security=SSPI;”
  • 好的,谢谢 - 另外:哪个用户是第一个引用的错误消息??
  • @ben_f:IIS 正在使用网络服务运行。有没有办法模拟当前登录的用户?

标签: asp.net sql-server iis


【解决方案1】:

通常 ASP.NET 作为匿名帐户运行。为了使用集成身份验证 (SSPI) 访问远程 SQL Server,您需要有更多的“永久”存在。简单的方法是将应用程序池转移到使用 NETWORK SERVICE 内置帐户。稍微棘手的是使用命名帐户。在等式的 SQL 服务器端,您需要为相同的帐户(匹配的用户/密码或网络服务)提供对您的数据库的适当权限。

您的 DBA 应该能够提供帮助。

【讨论】:

  • 那么您需要在 SQL 服务器上授予 NETWORK SERVICE 权限,您应该一切顺利。
【解决方案2】:

很难为您提供准确的答案,因为您没有在 SQL Server 配置中提供连接字符串或信息。最好的办法是查看 IIS 配置并找出正在尝试访问不同 SQL Server 的用户。然后,您需要授予此帐户对数据库的访问权限。这是一个常见问题,大部分更改都需要在 SQL Server 中进行,除非您可以更改运行 Web 服务器的帐户。

【讨论】:

  • 基本上我的连接字符串是这样的:“Data Source=myServerAddress;Initial Catalog=myDataBase;Integrated Security=SSPI;”
猜你喜欢
  • 1970-01-01
  • 2012-03-16
  • 1970-01-01
  • 2017-08-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-22
  • 1970-01-01
相关资源
最近更新 更多