0

Delphi 2010、dbExpress、および SQL Server 2005 DB

Delphi 2010 & DBExpress を使用して SQL Server 2005 DB に接続しようとしています。

標準の 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 は、実行可能ファイルと同じフォルダーにあります。

はい、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

私は最近、QuickReport の印刷がアプリケーション フォームでは正常に機能するのに、サービスに切り替えると機能しないという同様の状況に遭遇しました。これは Windows Server 2008 上にありました。サービス (あなたの場合は WebServer) は、ログオン タブの下のユーザー アカウントとして "NetworkService" を使用してインストールする必要があることが判明しました。Windows ヘルプから:

サービスがネットワーク サービス アカウントを使用するように指定するには、[このアカウント] をクリックし、「NT AUTHORITY\NetworkService」と入力します。

これを行うには、[スタート] -> [ファイル名を指定して実行] に移動し、services.mscと入力します。

IIS サービスに移動し、右クリックして [プロパティ] を選択し、[ログオン] に移動します。

このアカウントがチェックされていることを確認し、ネットワークサービスと表示されていることを確認してください

于 2010-04-16T20:13:30.430 に答える