⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 [dbnmpntw]拒绝访问.txt

📁 大量Delphi开发资料
💻 TXT
字号:
Q : 请问各位大侠,SqlServer2000数据库下Delphi做的客户端,拷到其他机器上,报错:[DBNMPNTW]拒绝访问? 
主要解答者: yxiner 提交人: xfwf 
感谢: Yang_、supsuccess、supsuccess、yxiner、yxiner、yxiner、yxiner、yxiner 
审核者: tj_dns 论坛对应贴子: 查看 
A :  

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

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

试试这三个文件: 
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的客户端连接工具,查看一下里面的有效协议并测试一下。 
--------------------------------------------------------------- 
 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -