【问题标题】:Unable to connect to SQL Server from Windows Service running on Windows Web Server 2008无法从 Windows Web Server 2008 上运行的 Windows 服务连接到 SQL Server
【发布时间】:2014-02-28 01:51:11
【问题描述】:

我在尝试从 Windows 服务(用 vb.net 编写) 连接 SQL 服务器时遇到以下错误。

在建立与 SQL Server 的连接时发生与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称是否正确以及 SQL Server 是否配置为允许远程连接。 (提供者:命名管道提供者,错误:40 - 无法打开与 SQL Server 的连接)

此服务在 Windows Web Server 2008 R2SQL Server 2008 上运行。 SQL Server 也位于同一台计算机上。此外,服务器上的防火墙已禁用。我有几个 Web 应用程序在同一个 windows 服务器 上运行,连接到同一个 sql 服务器,并且没有连接问题。但是,只有当我尝试从 windows 服务 进行连接时,才会遇到此问题。

任何帮助将不胜感激。

谢谢

【问题讨论】:

  • 这是一个命名实例吗? SQL Browser 服务是否正在运行?

标签: sql sql-server windows-services windows-server-2008-r2


【解决方案1】:

您可能有以下问题之一。

您没有使用正确的连接字符串。从正在运行的服务中转储您实际使用的字符串,并确保您可以连接到它。

您有权限问题——您应该仔细检查服务使用的安全上下文。如果您尝试使用集成安全或用户模拟进行连接,这是一个常见问题。

添加

如果您有间歇性问题,则存在不同的问题。 (不太可能基于您的问题描述。)我建议从您的服务中转储连接字符串以确保它正确的原因是开发人员(包括我)经常确定它是正确的,但实际上它不是。

如果您使用集成安全性,则流程使用服务的安全上下文运行,而这就是数据库将使用的用户上下文 -- 查看服务属性,您可以指定使用哪个用户来运行服务.

如果使用模拟,您基本上将安全上下文切换为用户的上下文 - 如果网站也使用集成安全性,即不是基于表单的安全性,通常会这样做 - 适合内部使用,而不是面向公众的网站。

【讨论】:

  • 连接字符串与我在 Web 应用程序中使用的相同。它是正确的。此外,服务可以使用本地管理员权限运行。
  • 您能详细说明一下吗? “如果您尝试使用集成安全或用户模拟进行连接,这是一个常见问题。”
  • 您是否已转储连接字符串以验证它实际上是否正确?如果没有,我强烈建议您这样做。我有一个镍...
  • 关于安全上下文,所以我什么都做了。以域管理员、本地管理员、本地服务的身份运行它,没有任何帮助。在我提供“sa”和密码的连接字符串中,你认为我还缺少什么吗?正如我所提到的,相同的连接字符串在 Web 应用程序上工作。
  • 坦率地说,我不相信您使用的是正确的连接字符串,因为经验告诉我这几乎总是问题所在,而您没有说,是的,我转储(或以其他方式验证)连接字符串在服务中其实是正确的。您只需声明它是正确的,因为它与您在其他地方使用的相同。当您说它在同一台机器上运行并且其他进程正在工作时,您消除了大多数其他常见问题(例如,DNS 问题、防火墙问题、数据库服务未运行)
猜你喜欢
  • 2013-05-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-02
  • 1970-01-01
  • 2022-01-09
  • 1970-01-01
相关资源
最近更新 更多