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

kcsg 2007-01-12 08:43:02
asp + SQL Server 2000
程序开始一段时间正常,一段时间后会出现错误如下:
Microsoft OLE DB Provider for SQL Server 错误 '80004005'

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

开始是正常的,说明程序是可以运行的,不明白的是过一段时间后为什么会出这样的错?
另:如果程序和数据库都在本机,经测试,不会有这样的错误
但是在客户端访问服务器上相同的程序段,就会出现这样的错误?!

操作系统是2003 server +sql2000
...全文
9389 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
gaoili420 2012-04-18
  • 打赏
  • 举报
回复

我也遇到这个问题。
SQL SERVER 不存在或访问被拒绝。
ConnectionOpen(Connect())
爱的华尔兹 2011-05-08
  • 打赏
  • 举报
回复
mark!!!
returnlittle 2009-01-14
  • 打赏
  • 举报
回复
我也遇到这个问题。
SQL SERVER 不存在或访问被拒绝。
ConnectionOpen(Connect())
hb_gx 2007-08-30
  • 打赏
  • 举报
回复
程序开始一段时间正常,一段时间后会出现错误
------------------------------------------------

如果是这样怀疑是Sql服务有问题,是不是服务突然停了,或者断断续续

另外种可能是程序里面的连接没有关,结果用到后面所有的连接都占满了,结果连不上了
zhksoft 2007-08-30
  • 打赏
  • 举报
回复
SQL Server连接中的常见错误:

  一."SQL Server 不存在或访问被拒绝"

  这个是最复杂的,错误发生的原因比较多,需要检查的方面也比较多.

  一般说来,有以下几种可能性:

  1,SQL Server名称或IP地址拼写有误

  2,服务器端网络配置有误

  3,客户端网络配置有误

  要解决这个问题,我们一般要遵循以下的步骤来一步步找出导致错误的原因.

  ============= 首先,检查网络物理连接 =============

  ping <服务器IP地址/服务器名称>

  如果 ping <服务器IP地址> 不成功,说明物理连接有问题,这时候要检查硬件设备,如网卡,HUB,路由器等.

  还有一种可能是由于客户端和服务器之间安装有防火墙软件造成的,比如 ISA Server.防火墙软件可能会屏蔽对 ping,telnet 等的响应

  因此在检查连接问题的时候,我们要先把防火墙软件暂时关闭,或者打开所有被封闭的端口.

  如果ping <服务器IP地址> 成功而,ping <服务器名称> 失败

  则说明名字解析有问题,这时候要检查 DNS 服务是否正常.

  有时候客户端和服务器不在同一个局域网里面,这时候很可能无法直接使用服务器名称来标识该服务器,这时候我们可以使用HOSTS文件来进行名字解析,

  具体的方法是:

  1.使用记事本打开HOSTS文件(一般情况下位于C:\WINNT\system32\drivers\etc).

  添加一条IP地址与服务器名称的对应记录,如:

  172.168.10.24 myserver

  2.或在 SQL Server 的客户端网络实用工具里面进行配置,后面会有详细说明.

  ============= 其次,使用 telnet 命令检查SQL Server服务器工作状态 =============

  telnet <服务器IP地址> 1433

  如果命令执行成功,可以看到屏幕一闪之后光标在左上角不停闪动,这说明 SQL Server 服务器工作正常,并且正在监听1433端口的 TCP/IP 连接

  如果命令返回"无法打开连接"的错误信息,则说明服务器端没有启动 SQL Server 服务,

  也可能服务器端没启用 TCP/IP 协议,或者服务器端没有在 SQL Server 默认的端口1433上监听.

  =============接着,我们要到服务器上检查服务器端的网络配置,检查是否启用了命名管道.是否启用了 TCP/IP 协议等等 =============

  可以利用 SQL Server 自带的服务器网络使用工具来进行检查.

  点击:程序 -- Microsoft SQL Server -- 服务器网络使用工具

  打开该工具后,在"常规"中可以看到服务器启用了哪些协议.

  一般而言,我们启用命名管道以及 TCP/IP 协议.

  点中 TCP/IP 协议,选择"属性",我们可以来检查 SQK Server 服务默认端口的设置

  一般而言,我们使用 SQL Server 默认的1433端口.如果选中"隐藏服务器",则意味着客户端无法通过枚举服务器来看到这台服务器,起到了保护的作用,但不影响连接.

  ============= 接下来我们要到客户端检查客户端的网络配置 =============

  我们同样可以利用 SQL Server 自带的客户端网络使用工具来进行检查,

  所不同的是这次是在客户端来运行这个工具.

  点击:程序 -- Microsoft SQL Server -- 客户端网络使用工具

打开该工具后,在"常规"项中,可以看到客户端启用了哪些协议.

  一般而言,我们同样需要启用命名管道以及 TCP/IP 协议.

  点击 TCP/IP 协议,选择"属性",可以检查客户端默认连接端口的设置,该端口必须与服务器一致.

  单击"别名"选项卡,还可以为服务器配置别名.服务器的别名是用来连接的名称,

  连接参数中的服务器是真正的服务器名称,两者可以相同或不同.别名的设置与使用HOSTS文件有相似之处.

  通过以上几个方面的检查,基本上可以排除第一种错误.
OracleRoob 2007-08-30
  • 打赏
  • 举报
回复
1、打最新补丁
2、关闭防火墙
jetxia 2007-01-15
  • 打赏
  • 举报
回复
标记
gpw 2007-01-15
  • 打赏
  • 举报
回复
我也遇到了这个问题!
lovcal 2007-01-12
  • 打赏
  • 举报
回复
此类问题一般的监测方法:
Microsoft OLE DB Provider for SQL Server (0x80004005)
[DBNETLIB][ConnectionOpen (Connect()).]Specified SQL server not found.

Microsoft OLE DB Provider for SQL Server (0x80004005)
用户 'sa' 登录失败。原因: 未与信任 SQL Server 连接相关联。

Microsoft OLE DB Provider for ODBC Drivers 错误 '80004005'.
[Microsoft][ODBC SQL Server Driver]超时已过期.

  首先,让我们来详细看以下的示意图来了解一下使用 ODBC 和使用 OLE DB 连接 SQL Server 有什么不同之处。




  从上图中,我们可以看出在实际使用中,应用程序创建和使用各种 ADO 对象,ADO 对象框架调用享用的 OLE DB 提供者。为了访问 SQL Server 数 据库,OLE DB 提供了两种不同的方法:用于 SQL Server 的 OLE DB 提供者以及用于 ODBC 的 OLE DB 提供者。这两种不同的方法对应于两种不同的连 接字符串,标准的连接字符串写法如下所示:

  1、使用用于 SQL Server 的 OLE DB 提供者:

  使用 SQL Server 身份验证:

oConn.Open "Provider=sqloledb;" & _
"Data Source=myServerName;" & _
"Initial Catalog=myDatabaseName;" & _
"User Id=myUsername;" & _
"Password=myPassword"

  使用 Windows 身份验证(信任连接): oConn.Open "Provider=sqloledb;" & _
"Data Source=myServerName;" & _
"Initial Catalog=myDatabaseName;" & _
"Integrated Security=SSPI"

  2、使用用于 ODBC 的 OLE DB 提供者(不使用 ODBC 数据源):

  使用 SQL Server 身份验证: oConn.Open "Driver={SQL Server};" & _
"Server=MyServerName;" & _
"Database=myDatabaseName;" & _
"Uid=myUsername;" & _
"Pwd=myPassword"

  使用 Windows 身份验证(信任连接): oConn.Open "Driver={SQL Server};" & _
"Server=MyServerName;" & _
"Database=myDatabaseName;" & _
"Trusted_Connection=yes"

  3、使用用于 ODBC 的 OLE DB 提供者(使用 ODBC 数据源): oConn.Open "DSN=mySystemDSN;" & _
"Uid=myUsername;" & _
"Pwd=myPassword"
  如果遇到连接失败的情况,我们只要按照一中所示的方法,结合程序中的连接字符串进行检查,基本都能得到解决。另外,还有以下几个要注意的地 方:

  1、配置 ODBC 数据源时,点击"客户端"配置选项可以让我们指定连接使用的网络库、端口号等属性,
 2、如果遇到连接超时的错误,我们可以在程序中修改 Connection 对象的超时设置,再打开该连接
3、如果遇到查询超时的错误,我们可以在程序中修改 Recordset 对象的超时设置,再打开结果集
lovcal 2007-01-12
  • 打赏
  • 举报
回复
防火墙之类的后来又没做端口规则?必须将1433端口放开
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了

22,300

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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