一个关于Delphi和Sql Server 6.5结合的Web编程问题

MikeZyx 2000-04-22 08:57:00
我是一个Web编程的初学者,在用Delphi进行ISAPI编程时,用本地数据库进行处理都没问题,但是当数据库用像SQL Server这样的远程数据库,常常出错,下面是我用来处理供应商查询的一段源程序,其功能是当用户在主页上输入供应商查询条件时,返回满足条件的数据记录:

unit UnitAll;

interface

uses
Windows, Messages, SysUtils, Classes, HTTPApp, DBWeb, Db, DBTables;

type
TWebModule1 = class(TWebModule)
Session1: TSession;
QrySaler: TQuery;
QueryTableProducer1: TQueryTableProducer;
QrySalerSalerNo: TStringField;
QrySalerSaler: TStringField;
QrySalerLinkMan: TStringField;
QrySalerPhone: TStringField;
QrySalerFax: TStringField;
QrySalerLxmanzw: TStringField;
procedure WebModule1dllSalerAction(Sender: TObject;
Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
procedure Session1Password(Sender: TObject; var Continue: Boolean);
private
{ Private declarations }
public
{ Public declarations }
end;

var
WebModule1: TWebModule1;

implementation

{$R *.DFM}

procedure TWebModule1.WebModule1dllSalerAction(Sender: TObject;
Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
begin
With QueryTableProducer1 do
Begin
Caption:='供应商查询结果';
Header.Add('<html>');
Header.Add('<body>');
Footer.Add('</body>');
Footer.Add('</html>');
Query:=QrySaler;
Query.Open;
Response.Content:=Content;
Query.Close;
End;
end;

procedure TWebModule1.Session1Password(Sender: TObject;
var Continue: Boolean);
begin
Session1.AddPassword('111111');
Continue:=true;
end;

end.

前端主页文件:
<html>

<head>
<meta http-equiv="Content-Type"
content="text/html; charset=gb_2312-80">
<meta name="GENERATOR" content="Microsoft FrontPage Express 2.0">
<title>供应商资料查询</title>
</head>

<body bgcolor="#FCECF4">

<p align="center"><font color="#0000FF" size="5" face="隶书">供应商资料查询</font>
</p>

<hr width="90%">

<p align="center"> </p>

<p align="left">请输入查询条件:</p>

<form action="Http://bydsv03/scripts/PrjHeadLink.dll/Saler"
method="GET" name="form1">
<p align="center">供应商编码 <input type="text"
size="20" maxlength="6" name="Bh"> <br>
供应商名称 <input type="text" size="20" maxlength="22"
name="Name"> <br>
联 系 人 <input type="text" size="20" maxlength="10"
name="Man"> <br>
联系电话: <input type="text" size="20" name="Phone"> <br>
传  真: <input type="text" size="20" name="Fax"> </p>
<p align="center"><input type="submit" value="开始查询">
   <input type="reset" value="清除条件"> </p>
</form>

<p align="center"> </p>

<hr width="90%">

<p align="left"> </p>
</body>
</html>

运行后出现以下错误信息:
Internal Server Error 500

-------------------------------------------------------------------------
Exception: EDBEngineError
Message: Alias is not currently opened. [Microsoft][ODBC SQL Server Driver][SQL Server]Login failed- User: _ Reason: Not defined as a valid user of a trusted SQL General SQL error. Server connection. Alias: BYDDB
我头都大了,请问哪位高手能帮我解决问题?
...全文
222 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
929 2000-04-25
  • 打赏
  • 举报
回复


IDC: Error Performing Query, Not Defined as a Valid User
Last reviewed: April 22, 1997
Article ID: Q149425

The information in this article applies to:
Microsoft Internet Information Server version 1.0


SYMPTOMS
When you access an IDC script, you may receive the following error message:


Error Performing Query
*[State=3700][Error=18450][Microsoft][ODBC SQL Driver][SQL Server]
Login failed- User: _ Reason: Not defined as a valid user of a
trusted SQL Server Connection.

CAUSE
The error message above may occur in the following conditions:

Your SQL Server is not the same computer as your Internet Information Server (IIS).
You are using Microsoft Windows NT Challenge/Response authentication on IIS.
You are using Integrated or Mixed Security on the Microsoft SQL Server.
You are not are not providing the Username: or Password: values in your IDC Script.

WORKAROUNDS
There are two possible workarounds:

Install SQL Server on the same computer as the Internet Information Server and set up your ODBC System DSN to be Local Server instead or a remote computer name.

-or-
Use Basic Authentication instead of Windows NT Challenge/Response (for example, the user will be prompted to login using a dialog box)

MORE INFORMATION
When the client executes the IDC script, IIS must determine whether the datasource is local or remote. If the datasource defined as Local System, the query is passed to the SQL Server on the same computer. If the datasource is remote, IIS must make a network connection to SQL Server. When it does, it does not pass the credentials of user logged on to the client computer; instead, it passes a blank username and password.

The SQL Server tries to validate a user without a username; it fails, and it returns the following message to IIS:


Login failed- User: _ Reason: Not defined as a
valid user of a trusted SQL Server Connection

The Internet Information Server then passes the results of the query to the client web browser.



--------------------------------------------------------------------------------

Additional query words: prodiis winnt
Keywords : iishowto kbnetwork
Version : 1.0 3.51
Platform : WINDOWS


THE INFORMATION PROVIDED IN THE MICROSOFT KNOWLEDGE BASE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. MICROSOFT DISCLAIMS ALL WARRANTIES, EITHER EXPRESS OR IMPLIED, INCLUDING THE WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL MICROSOFT CORPORATION OR ITS SUPPLIERS BE LIABLE FOR ANY DAMAGES WHATSOEVER INCLUDING DIRECT, INDIRECT, INCIDENTAL, CONSEQUENTIAL, LOSS OF BUSINESS PROFITS OR SPECIAL DAMAGES, EVEN IF MICROSOFT CORPORATION OR ITS SUPPLIERS HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. SOME STATES DO NOT ALLOW THE EXCLUSION OR LIMITATION OF LIABILITY FOR CONSEQUENTIAL OR INCIDENTAL DAMAGES SO THE FOREGOING LIMITATION MAY NOT APPLY.

Last reviewed: April 22, 1997
© 1998 Microsoft Corporation. All rights reserved. Terms of Use.

basic authentication

A security mechanism using a standard HTTP mechanism in which user information is sent received as clear text. (The term clear text indicates data is transmitted as clearly readable text characters rather than binary bit-streamed information, which is not text-formatted.) Passwords and user names are encoded but not encrypted in this type of authentication.

challenge/response authentication

A security mechanism in which a client computer uses its established user logon information to identify itself to the server computer. The user is not prompted to enter these user credentials. Instead, the information is available after the user first logs on to a Microsoft® Windows NT®-based computer.


上面这段文字是由MSDN中摘录的。
错误产生原因:IIS在执行数据库连接时要进行用户的登录,这在SQL SERVER与IIS同一机上时很容易做到,但当不在同一机而要登录到另一台机器上时会由于找不到用户登录信息出错。
解决方法:把IIS和SQL SERVER放在一台机器上或修改SQL SERVER的安全验证方式为basic authentication,比如说提示输入用户名和密码再进行登录或在程序以预定用户名登录。

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧