2015-07-21 45 views
0

我在Delphi XE8中编写客户端和TWO服务器。 一个服务器是一个正常的程序,第二个是windows服务。两个公开了相同的三个功能:在MS SQL 2008 R2数据库上进行简单的“ping”,文件传输和查询。从德尔福XE8服务访问SQL Server 2008 R2

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

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

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

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

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

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

有些想法?

+0

“在线程内部创建表单”在服务内部? Btw是否尝试使用UNC路径名访问任何资源? – MartynA

+0

尝试使用“services.msc”上的管理员权限定义用户和密码。此外,由于服务应用程序无法调试,因此可以实施例程以在某些关键事件中保存文件日志。这可以帮助您更准确地获取错误内容。 –

+0

@ R.PSilveira Delphi服务应用程序可以使用“运行”菜单中的“附加到进程”项进行调试。 IDE需要以管理员权限运行。 –

回答

0

解决:我在SQL密码中犯了一个错误...