【问题标题】:Accessing SQL Server 2008 R2 from a service in Delphi XE8从 Delphi XE8 中的服务访问 SQL Server 2008 R2
【发布时间】:2015-07-23 23:08:47
【问题描述】:

我正在用 Delphi XE8 编写一个客户端和两个服务器。 一台服务器是带有表单的普通程序,第二台是 Windows 服务。 两者都公开了相同的三个功能:简单的“ping”、文件传输和对 MS SQL 2008 R2 数据库的查询。

当我使用客户端和“程序”服务器时,一切正常,我可以在客户端上编写查询,将查询发送到服务器,并接收数据。

当我使用客户端和“服务”服务器时,某些部分可以工作,但是如果我可以在客户端上编写查询,将查询发送到服务器,服务器会收到查询,但无法访问数据库.

我在 VMWare 虚拟机 Win7 32 位上工作,使用 Delphi XE8 和 TMS Sparkle 作为传输系统,以及 DBExpress 和 DB 访问。 我已经关闭了防病毒和防火墙。 SQL Server 配置良好,协议、端口、浏览器正在运行。 该服务在 LOCAL SYSTEM 下运行(对于所有其他用户,该服务无法启动,我不明白为什么)。

我认为TMS每次收到请求时都会创建一个线程,而我的代码就在这个线程内。 在线程中,我创建了一个表单、一个拥有表单所有者的 TSQLConnection 和一个 TSQLQuery,并尝试打开连接。

在我的日志中,我发现“SQL 错误代码:53”:找不到服务器或...(“或”后没有任何内容)。

我想这可能是权限问题,但我不确定。

一些想法?

【问题讨论】:

  • "在线程内部我创建了一个表单" 在服务内部?顺便说一句,您的服务是否尝试使用 UNC 路径名访问任何资源?
  • 尝试在“services.msc”上定义具有管理员权限的用户和密码。此外,由于无法调试服务应用程序,您可以实现一个例程来保存一些关键事件中的文件日志。这有助于您更准确地获取错误内容。
  • @R.PSilveira Delphi 服务应用程序可以使用运行菜单中的Attach to process 项进行调试。 IDE 需要以管理员权限运行。

标签: sql-server multithreading sql-server-2008 delphi tms


【解决方案1】:

已解决:我输入了 SQL 密码错误...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-02
    • 1970-01-01
    • 2011-08-08
    • 2012-07-29
    • 1970-01-01
    相关资源
    最近更新 更多