通过Web服务连接到SQL Server 2005

时间:2010-04-16 19:48:54

标签: sql-server web-services delphi delphi-2010 dbexpress

Delphi 2010,dbExpress和SQL Server 2005 DB

我正在尝试使用Delphi 2010连接到SQL Server 2005数据库&的dbExpress。

如果我创建一个标准的delphi应用程序并硬编码我的连接(IT WORKS!):

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都与我的可执行文件

位于同一文件夹中

是的,我有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;

由于

2 个答案:

答案 0 :(得分:2)

该行

Conn.LoginPrompt:=True;

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

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

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

答案 1 :(得分:0)

我最近遇到过类似的情况,即打印QuickReports可以在应用程序中正常工作,但切换到服务时无法正常工作。这是在Windows Server 2008上。使用“NetworkService”作为登录选项卡下的用户帐户,需要安装服务(在您的情况下是WebServer)。从Windows帮助:

  

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

要执行此操作,请转到开始 - >运行,然后输入 services.msc

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

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