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;
由于
答案 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服务并右键单击并选择“属性”,然后转到“登录”。
确保选中此帐户并显示网络服务