请问各位大侠,SqlServer2000数据库下Delphi做的客户端,拷到其他机器上,报错:[DBNMPNTW]拒绝访问? To:Yang_(扬帆破浪) 我在自己的机器上(装了Delphi)运行、连接一切正常,但是换到其他机器上就报上面的错误, 对了,需要安装什么样的连接组件? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 试试这三个文件:dbnetlib.dll、dbnmpntw.dll、ntwdblib.DLL(PB客户端可以的)放到客户端可执行程序下 To supsuccess:试过了,不行。 请大家帮帮我!马上准备试运行,我总不能在每台客户端上安装一个Delphi吧 难道Delphi的搜索路径跟PB不同?放到Windows的系统目录(System / System32)底下怎样?试试TCP/IP协议?到Delphi论坛去搜搜看? To supsuccess: 试过了,放到系统目录也不行,我使用的就是TCP/IP协议。 这个问题,我在Delphi论坛,求助过,都没解决。 安装SQLServer2000中的客户端连接工具;也可以把dbnetlib.dll、dbnmpntw.dll、ntwdblib.DLL这三个文件拷贝到运行目录或system目录下,不过在不同的网段中访问时需要在注册表中注册:HKEY_LOCAL_MACHINE\Software\Microsoft\MSSQLServer\Client\ConnectTo,其中键值名为:DSQUERY,键值为:DBNETLIB;还有就是你需要注意在连接字符串中设置的服务器名是否正确,我刚好做了这么一个,一切正常,若有问题请继续提出。 To: supsuccess(口气不小) 采用Ado连接。To: yxiner(): 首先,谢谢你的热情帮助。 你讲的三个文件,我试过放到客户端机器的system目录下,但没有用。 现在,我又没有办法试你的方法。能不能给我讲讲关于客户端连接的详细知识。小弟不胜感激! 可以用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环境下测试通过,再编译运行正常最后才涉及到发布问题。 你刚才讲的我都知道,我在设计时,还加入了调用连接字符串的模块,所以在客户端的上面,我可以打开AdoConnection的AdoConnectionString的属性对话框,在该对话框中,我也是打开出错。 To:yxiner() 1.网络通 2.开发环境中连通了,能正常使用,只是我是说在其他机器上调用Adoconnectionstring 对话框不通. 3.服务器运行了,在开发环境中一切正常. 我还遇到一种情况是:我使用SQLServer2000的个人版,安装在WIN98下,客户端不能正常访问,只能在本地访问。 当然,从你提供的是 DBNMPNTW 拒绝访问,我看了一下,你在客户端可能使用的是 Named Pipes 协议,而TCP/IP协议应提示DBNETLIB 拒绝访问,请你在任一客户端安装一个SQLServer2000的客户端连接工具,查看一下里面的有效协议并测试一下。 我已下班,如果还有问题请给我发邮件[email protected],我们一起共同讨论。 请教一条跨数据库语句 SQL基础题 100分 求SQL语句,关于随机分组后在随机排序。 如何合并字段显示 sql2000注册服务器问题 真心求助各位高手,十万火急!!!!! (急)用存储过程查询很慢,花掉大约一份钟,如果直接调用select语句很快就查询出结果。 有关在SQL SERVER中使用TRIGGER造成活锁的问题。 存储过程无法调试? lotus数据导入到sqlserver2000问题 作交叉表是否有更方便的方法? 请高手帮忙 SQL数据库恢复问题
dbnetlib.dll、dbnmpntw.dll、ntwdblib.DLL(PB客户端可以的)
放到客户端可执行程序下
请大家帮帮我!马上准备试运行,我总不能在每台客户端上安装一个Delphi吧
放到Windows的系统目录(System / System32)底下怎样?
试试TCP/IP协议?到Delphi论坛去搜搜看?
试过了,放到系统目录也不行,我使用的就是TCP/IP协议。
这个问题,我在Delphi论坛,求助过,都没解决。
To: yxiner():
首先,谢谢你的热情帮助。
你讲的三个文件,我试过放到客户端机器的system目录下,但没有用。
现在,我又没有办法试你的方法。能不能给我讲讲关于客户端连接的详细
知识。小弟不胜感激!
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.开发环境中连通了,能正常使用,只是我是说在其他机器上调用Adoconnectionstring 对话框不通.
3.服务器运行了,在开发环境中一切正常.
当然,从你提供的是 DBNMPNTW 拒绝访问,我看了一下,你在客户端可能使用的是 Named Pipes 协议,而TCP/IP协议应提示DBNETLIB 拒绝访问,请你在任一客户端安装一个SQLServer2000的客户端连接工具,查看一下里面的有效协议并测试一下。