Подключение к SQL Server 2005 через веб-сервис - PullRequest
0 голосов
/ 16 апреля 2010

Delphi 2010, dbExpress и БД SQL Server 2005

Я пытаюсь подключиться к БД SQL Server 2005 с помощью Delphi 2010 & DBExpress.

Если я создаю стандартный 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 находятся в той же папке, что и мой исполняемый файл

, и да, у меня есть DBXMsSQL & MidasLibв пункте использования

снова он работает, если это не веб-служба!

Однако, если я затем перенесу код в модуль 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 ]

2 голосов
/ 17 апреля 2010

Линия

Conn.LoginPrompt:=True;

является первым признаком того, что что-то не так. Веб-служба не может обработать запрос на вход в систему.

Во-вторых, где определяется VPUCDS_VPN_SE01? Если это пользовательское соединение ODBC, вы должны сделать это общесистемным соединением.

Укажите данные входа в систему в определении соединения и установите для LoginPrompt значение false. Также предоставьте способ возврата причины сбоя соединения клиенту (например, путем передачи сообщения об исключении).

0 голосов
/ 17 апреля 2010

Недавно я столкнулся с похожей ситуацией, когда печать QuickReports работала бы нормально в форме заявки, но при переключении на службу не работала. Это было на Windows Server 2008. Оказывается, служба (в вашем случае WebServer) должна была быть установлена ​​с «NetworkService» в качестве учетной записи пользователя на вкладке входа. Из справки Windows:

Чтобы указать, что служба использует учетную запись сетевой службы, щелкните Эта учетная запись, а затем введите NT AUTHORITY \ NetworkService

Для этого перейдите в Пуск-> Выполнить, а затем введите services.msc

Перейдите к службе IIS, щелкните правой кнопкой мыши и выберите «Свойства», а затем перейдите к «Вход в систему».

Убедитесь, что Эта учетная запись проверена, и на ней написано Сетевая служба

...