[DBNETLIB][ConnectionOpen (Connect()).]SQL Server 不存在或拒绝访问

wangzhengcun 2008-11-25 08:29:49
用vb开发了一个小程序,在A机器(2000系统上运行正常). 在B机器上(XP系统),主登录介界下的组合框下的值取数据库中的数正常,可是,在点确定按钮时就出现[DBNETLIB][ConnectionOpen (Connect()).]SQL Server 不存在或拒绝访问,然后本程序死掉.
请问这是怎么回事?为什么Win2000好使?
主要源码:
Option Explicit
Dim sql As String
Dim str As String
Dim sql1 As String
Dim i As Integer
Dim Cn As New ADODB.Connection
Dim Rs As New ADODB.Recordset

Private Sub Form_Load()
Cn.ConnectionString = "Provider=SQLOLEDB.1;Password=83152003;Persist Security Info=True;User ID=sa;Initial Catalog=Mroom;Data Source=10.65.128.156"

sql = "select name from Muser "
Rs.CursorLocation = adUseClient
Rs.Open sql, Cn, adOpenDynamic, adLockPessimistic
Rs.MoveFirst
For i = 0 To Rs.RecordCount - 1
Cb1.AddItem (Rs.Fields("name"))
Rs.MoveNext
Next
Rs.MovePrevious
Cb1.Text = Rs.Fields("name")
End Sub
Private Sub Command1_Click()
main.StatusBar1.Panels(4).Text = Cb1.Text
Dim Cn1 As New ADODB.Connection
Dim Rs1 As New ADODB.Recordset
Cn1.ConnectionString = "Provider=SQLOLEDB.1;Password=83152003;Persist Security Info=True;User ID=sa;Initial Catalog=Mroom;Data Source=10.65.128.156"
Cn1.Open
sql1 = "select * from muser where name='" & Trim(Cb1.Text) & "'"
Rs1.CursorLocation = adUseClient
Rs1.Open sql1, Cn1, adOpenDynamic, adLockPessimistic

If Rs1.RecordCount = 0 Then
MsgBox "无此用户,请重新选择!", vbOKOnly
Else
If Trim(Text2.Text) = Trim(Rs1.Fields("password")) Then
If Rs1.Fields("authority") = 1 Then
Load backmanager
backmanager.Show
Unload Me
Else
Load main
main.Show
Unload Me
End If
Else
MsgBox "用户名或密码不对,请重新输入!", vbOKOnly, "警告"
Cb1.SetFocus
End If
End If
End Sub
...全文
715 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
wangzhengcun 2008-11-26
  • 打赏
  • 举报
回复
直接绑定可以节约代码,提高程序执行效率
T315608 2008-11-26
  • 打赏
  • 举报
回复
一般不建议用控件进行绑定数据源
wangzhengcun 2008-11-26
  • 打赏
  • 举报
回复
谢谢各位,其实问题出在连接字符串上。
我是在Win2000系统上开发的,当是在backmanager窗体上加了一个adodc控件,和很多的text控件,而且邦定了数据库,但是在adodc的"连接"符中忘记了改SQL的服务器地址了,故,在别的机器上(SQL服务器也在此机上),无法连成功
lsftest 2008-11-25
  • 打赏
  • 举报
回复
先在有问题的机子里用excel或其它的工具看看能不能读出数据来。
另外,除非基于安全考虑,否则似乎没有必要在formload和command1click的时候重复查询,一次把用户名、密码东西都读出来就行了。。还有,用完的时候注意释放。在你的formload事件中我就看不到有释放的动作。
Tiger_Zhao 2008-11-25
  • 打赏
  • 举报
回复
Win2000 和 WinXP 关于安全性方面的差异比较大,你的 SQL Server 可能用来混合安全方式,除了用 sa 数据库用户还会用当前的 Windows 用户进行验证,这样两个操作系统会有明显差异。而配置 ODBC 时可以指定仅使用数据库用户进行验证,建议试试。

只用同一个 cn 对象就可以了。
wangzhengcun 2008-11-25
  • 打赏
  • 举报
回复
现在主要是有的机器上好使,有的机器上不好使,怎么回事呀?
这段代码怎么简化为1个connection?
Tiger_Zhao 2008-11-25
  • 打赏
  • 举报
回复
同一个画面为什么要用两个 Connection?
建议使用 ODBC 的连接方式而不是 SQLOLEDB 方式。
jhone99 2008-11-25
  • 打赏
  • 举报
回复
127.0.0.1
这个不好
好像很多设备默认这个,容易冲突
aohan 2008-11-25
  • 打赏
  • 举报
回复
If Trim(Text2.Text) = Trim(Rs1.Fields("password") & "") 试试

有可能是你那个密码为空了,所以报错
wangzhengcun 2008-11-25
  • 打赏
  • 举报
回复
Private Sub Form_Load()
Cn.ConnectionString = "Provider=SQLOLEDB.1;Password=83152003;Persist Security Info=True;User ID=sa;Initial Catalog=Mroom;Data Source=10.65.128.156"

sql = "select name from Muser "
Rs.CursorLocation = adUseClient
Rs.Open sql, Cn, adOpenDynamic, adLockPessimistic
Rs.MoveFirst
For i = 0 To Rs.RecordCount - 1
Cb1.AddItem (Rs.Fields("name"))
Rs.MoveNext
Next
Rs.MovePrevious
Cb1.Text = Rs.Fields("name")
End Sub
这段代码执成功了,可以证明网络及SQL server 没有问关,主要是在:
If Trim(Text2.Text) = Trim(Rs1.Fields("password")) 这段代码这里程序死掉,感觉rs1.fields("password")这里出错,但为什么有的机器上可用呢!另外说明一下,我的服务器IP均改为127.0.0.1了
jhone99 2008-11-25
  • 打赏
  • 举报
回复
网络连接没有问题?
sql server的引擎在xp那台电脑是否正常?
SQLserver2000〔Microsoft][ODBC SQL Server Driver][DBNETLIB]SQL Server不存在或访问被拒绝 分类: Technology2007-04-20 19:076126人阅读评论(1)收藏举报 SQLserver2000,打开服务管理器时出现错误:〔Microsoft][ODBC SQL Server Driver][DBNETLIB]SQL Server不存在或访问被拒绝" (一台机器即作服务器又作客户机,软件连接中出现: [DBNETLIB][ConnectionOpen(connect()).]SQL Server 不存在拒绝访问。 现从网上查阅问题解决办法有如下几种: (A)1:你如果是独立上网的请把21端口打开.局域网把1433端口打开就可以了. 2;关闭防火墙! (B)把数据库连接的 SqlLocalName="(local)" 的(local) 改成 IP试试。可以把(local) 该成127.0.0.1,或者改成外网IP (C)打开服务,暂停全文检索及sql server服务 开启sql server服务 再开启全文检索服务 (D)SQL Server 右键属性==>安全选项中的“所有权链接:”“允许跨数据库所有权链接”前面的勾要勾上(此操作需要重起SQL Server)。 1、先保证ping通 2、在dos下写入telnet ip 1433不会报错 3、用ip连如企业管理器: 企业管理器-->右键SQlserver组-->新建sqlserver注册-->下一步-->写入远程实例名(IP,机器名)-->下一步-->选Sqlserver登陆-->下一步-->写入登陆名与密码(sa,pass)-->下一步-->下一步-->完成 4、如果还不行: sqlserver服务器-->开始菜单-->SQLserver-->服务器网络实用工具-->启用 WinSock代理-->代理地址:(sqlserver服务器IP)-->代理端口-->1433-->OK了 5、如果还不行: sqlserver客户端-->开始菜单-->SQLserver-->客户端网络实用工具-->别名-->添加-->写入别名如"大力"-->"网络库"选tcp/ip-->服务器名称写入远程ip或实例名-->OK了
网狐6.6 服务器源代码&共享组件&数据库,包括服务器端所有组件(内核除外,现在市面上还没有6.6内核),共享组件(公共服务,界面控件,界面资源),以及全部数据库文件和脚本文件,6.6较6.5有较大改动,是学习研究的上等程序代码。 结合本人上次发布的客户端组件,即为网狐66系统模块全部源代码!!!官方售价几万,网上有人卖几百到几千不等,本程序绝对6.6新版代码(带道具),识货的下。 总共140M,7个解压包:1~7。 #ifndef KERNEL_ENGINE_HEAD_HEAD_FILE #define KERNEL_ENGINE_HEAD_HEAD_FILE ////////////////////////////////////////////////////////////////////////// //包含文件 #include #include #include #include #include //平台文件 #include "..\..\模板库\Template.h" #include "..\..\公共文件\Constant.h" #include "..\..\公共文件\GlobalDef.h" #include "..\..\共享组件\公共服务\ComService.h" ////////////////////////////////////////////////////////////////////////// //ADO 定义 #import "MSADO15.DLL" rename_namespace("ADOCG") rename("EOF","EndOfFile") using namespace ADOCG; typedef _com_error CComError; //COM 错误 typedef _variant_t CDBVarValue; //数据库数值 ////////////////////////////////////////////////////////////////////////// //导出定义 //导出定义 #ifndef KERNEL_ENGINE_CLASS #ifdef KERNEL_ENGINE_DLL #define KERNEL_ENGINE_CLASS _declspec(dllexport) #else #define KERNEL_ENGINE_CLASS _declspec(dllimport) #endif #endif //模块定义 #ifndef _DEBUG #define KERNEL_ENGINE_DLL_NAME TEXT("KernelEngine.dll") //组件 DLL 名字 #else #define KERNEL_ENGINE_DLL_NAME TEXT("KernelEngineD.dll") //组件 DLL 名字 #endif ////////////////////////////////////////////////////////////////////////// //系统常量 //常量定义 #define TIME_CELL 200 //时间单元 #define TIMES_INFINITY DWORD(-1) //无限次数 #define MAX_ASYNCHRONISM_DATA 8192 //异步数据 ////////////////////////////////////////////////////////////////////////// //网络定义 //连接错误 #define CONNECT_SUCCESS 0 //连接成功 #define CONNECT_FAILURE 1 //连接失败 #define CONNECT_EXCEPTION 2 //参数异常 //关闭原因 #define SHUT_REASON_INSIDE 0 //内部原因 #define SHUT_REASON_NORMAL 1 //正常关闭 #define SHUT_REASON_REMOTE 2 //远程关闭 #define SHUT_REASON_TIME_OUT 3 //网络超时

1,217

社区成员

发帖
与我相关
我的任务
社区描述
VB 数据库(包含打印,安装,报表)
社区管理员
  • 数据库(包含打印,安装,报表)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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