请问各位大侠,SqlServer2000数据库下Delphi做的客户端,拷到其他机器上,报错:[DBNMPNTW]拒绝访问?

?
---------------------------------------------------------------

是否连通?
是否安装了连接组件?
---------------------------------------------------------------

试试这三个文件:
dbnetlib.dll、dbnmpntw.dll、ntwdblib.DLL(PB客户端可以的)
放到客户端可执行程序下
---------------------------------------------------------------

难道Delphi的搜索路径跟PB不同?
放到Windows的系统目录(System / System32)底下怎样?
试试TCP/IP协议?

到Delphi论坛去搜搜看?
---------------------------------------------------------------

安装SQLServer2000中的客户端连接工具;也可以把dbnetlib.dll、dbnmpntw.dll、ntwdblib.DLL这三个文件拷贝到运行目录或system目录下,不过在不同的网段中访问时需要在注册表中注册:HKEY_LOCAL_MACHINE\Software\Microsoft\MSSQLServer\Client\ConnectTo,其中键值名为:DSQUERY,键值为:DBNETLIB;还有就是你需要注意在连接字符串中设置的服务器名是否正确,我刚好做了这么一个,一切正常,若有问题请继续提出。
---------------------------------------------------------------

可以用ADO的连接字串属性自动生成连接字符串,我为了通用,专门建立了一个连接字串的数据模块,使用ADO的ADOConnection控件,用连接字串变量给ConnectionString属性赋值即可。我设置的连接字串例子是:
var
sPaswd,
sServer,
ADataSource,
ConnectStr:String;
begin
sPaswd:='Password=123;Persist Security Info=True;';
sServer:='Data Source='+sServer;
ADataSource:='User ID=sa;Initial Catalog=XSXX;';
ConnectStr:=Concat(sProvider,sPaswd,ADataSource,sServer);
try
with adconnect do
begin
Connected:=False;
ConnectionString:=ConnectStr;
Connected:=True;
end;
except
Application.MessageBox(PChar('不能打开数据库,请确认网络联接正常'+#13+
'或与管理员联系启动服务端程序,请稍后再试。'),'提示:',MB_ICONERROR);
end;

其中sPaswd为登录数据库的密码,我使用的是默认的登录用户sa,当然可以设为你在SQLServer2000中设置的用户;sServer为登录的数据库服务器,即你安装SQLServer2000的机器名,我为了在客户端能灵活地设置数据服务器,因此我把服务器名写入注册表,如果不能正常访问,则弹出窗口重设服务器并测试连接;Initial Catalog=XSXX中的XSXX应改为你的数据库名。
以上过程应在客户端的Delphi环境下测试通过,再编译运行正常最后才涉及到发布问题。

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

1.网络测试通吗?
2.客户端安装连接工具了吗?因为你在开发环境中还没有连通,可以先在此环境中通过再说.
3.服务端运行了吗?

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

我还遇到一种情况是:我使用SQLServer2000的个人版,安装在WIN98下,客户端不能正常访问,只能在本地访问。
当然,从你提供的是 DBNMPNTW 拒绝访问,我看了一下,你在客户端可能使用的是 Named Pipes 协议,而TCP/IP协议应提示DBNETLIB 拒绝访问,请你在任一客户端安装一个SQLServer2000的客户端连接工具,查看一下里面的有效协议并测试一下。
---------------------------------------------------------------

我已下班,如果还有问题请给我发邮件[email protected],我们一起共同讨论。

Published At
Categories with 数据库类
comments powered by Disqus