0

Delphi 2010、dbExpress 和 SQL Server 2005 数据库

我正在尝试使用 Delphi 2010 和 DBExpress 连接到 SQL Server 2005 DB。

如果我创建一个标准的 delphi 应用程序并对我的连接进行硬编码(它可以工作!):

procedure TForm1.Button1Click(Sender: TObject);
var
 Conn: TSQLConnection;
begin
 Conn:= TSQLConnection.Create(nil);
 Conn.ConnectionName:= 'VPUCDS_VPN_SE01';
 Conn.LoadParamsOnConnect := True;
 Conn.LoginPrompt:=True;
 try
   Conn.Connected:= True;
   if Conn.Connected then
   ShowMessage('Connected!')
   else
   ShowMessage('NOT Connected!')
 finally
  Conn.Free;
 end;
end;

所有 ini 文件和 DLL 与我的可执行文件位于同一文件夹中

是的,我在 uses 子句中有 DBXMsSQL 和 MidasLib

同样,如果它不是 Web 服务,它就可以工作!

但是,如果我随后将代码移至 Web 服务 CGI 模块:

function TTest.ConnectToDB: Boolean;stdcall;
var
 Conn: TSQLConnection;
begin
 Conn:= TSQLConnection.Create(nil);
 Conn.ConnectionName:= 'VPUCDS_VPN_SE01';  
 Conn.LoadParamsOnConnect := True;
 Conn.LoginPrompt:=True;
 try
   Conn.Connected:= True;
   result:=  Conn.Connected;
 finally
  Conn.Free;
 end;
end;

谢谢

4

2 回答 2

2

线

Conn.LoginPrompt:=True;

是出现问题的第一个迹象。Web 服务无法处理登录提示。

二、VPUCDS_VPN_SE01在哪里定义?如果它是用户特定的 ODBC 连接,则应使其成为系统范围的连接。

在连接定义中提供登录详细信息,并将 LoginPrompt 设置为 false。此外,提供一种将连接失败的原因返回给客户端的方法(例如,通过传递异常消息)。

于 2010-04-16T21:28:50.650 回答
0

我最近遇到了类似的情况,打印 QuickReports 在申请表中可以正常工作,但在切换到服务时不起作用。这是在 Windows Server 2008 上。结果是服务(在您的情况下是 WebServer)需要使用“NetworkService”作为登录选项卡下的用户帐户进行安装。从 Windows 帮助:

要指定服务使用网络服务帐户,请单击此帐户,然后键入 NT AUTHORITY\NetworkService

为此,请转到开始-> 运行,然后输入services.msc

导航到 IIS 服务并右键单击并选择属性,然后转到登录。

确保选中此帐户并显示网络服务

于 2010-04-16T20:13:30.430 回答