【问题标题】:Windows Service Not connecting to SQL DatabaseWindows 服务未连接到 SQL 数据库
【发布时间】:2016-09-09 02:05:48
【问题描述】:

我有一个简单的 Windows 服务,我们已经使用了多年。我们在内部开发了它,但多年来没有人接触过它。它更新位于同一服务器上的 SQL 数据库中的几个表。我将它安装在虚拟服务器上,它似乎正在运行,但没有更新 SQL 数据库。

我相信它使用 CLICONFG 中设置的别名连接到数据库。它是使用指向本地 SQL EXPRESS 数据库的命名管道连接设置的。

它在安装了默认 SQL EXPRESS 实例的服务器上正常运行。我能找到的唯一区别是当前服务器有一个命名实例 (.\SQLEXPRESS)。但是,我已经让它在具有命名实例而不是默认实例的其他服务器上成功运行,但我似乎无法让它工作。

我已经搜索和搜索,但无法找出问题所在。 我检查了 SQL 中可能存在的权限问题,并且我为服务选择的登录名似乎一切正常。

谢谢!

【问题讨论】:

  • 它是否使用了 ODBC 连接?
  • 它是如何获得与 SQL 对话的连接字符串的?一个配置文件,它是在服务本身中硬编码的,还是可能是传入的参数。不知道它如何与 SQL 对话,这可能是一个问题。还要检查您的事件日志,因为即使它正在运行,它也可能会左右抛出错误。
  • 这适用于哪个 RDBMS?请添加标签以指定您使用的是mysqlpostgresqlsql-serveroracle 还是db2 - 或其他完全不同的东西。
  • 我相信连接是硬编码到服务中的。我们使用配置文件进行其他设置,但连接不包含在其中。
  • 不幸的是,我不确定它是如何连接到 SQL 的。该服务与经典的 ASP/ASP.net Web 应用程序结合使用。 Web 程序使用两个连接字符串:一个在注册表中,一个在 web.config 文件中。对于经典的 ASP 和 .Net 页面,Web 应用程序都可以很好地连接到数据库。此外,服务器设置了命名管道别名(它可能是硬编码连接引用别名,因为我们对安装它的每个服务器都使用相同的别名)。

标签: sql sql-server service


【解决方案1】:

感谢大家的建议。我想通了!

原来它是通过 cliconfg 中的命名管道连接设置连接到 SQL。

我已经使用我们的标准别名设置了命名管道连接....以及指定 SQL 命名实例的管道....这不适用于此服务器。

该服务需要一个默认实例。在没有修改我们的标准命名管道配置的情况下,该服务在没有命名实例的情况下正常工作,但那是一个 32 位 Windows 服务器。这一次,在 64 位 Windows 服务器上,它无法正常工作。

所以....

我使用 ProcMon 来确定它要查找的内容...然后添加了第二个命名管道连接,名为“(本地)”,而不是我们的标准别名。我将管道设置为与我们的其他连接完全相同。我把我们的标准命名管道连接以及我们的标准别名留在那里。

重新启动,它工作了!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-02
    • 1970-01-01
    • 2019-03-10
    • 1970-01-01
    • 2014-03-23
    相关资源
    最近更新 更多