使用Java程序连sql server 2000, JDBC连接方式失败,而ODBC连接方式成功

使用Java程序连sql server 2000, JDBC连接方式失败,而ODBC连接方式成功

问题描述:

Java程序连接MS Sql server 2000数据库
原来使用的JDBC连接方式,一切正常。
后来很长一段时间后,发生JDBC不能连接数据库,更换为ODBC连接方式,居然没有问题。
然后过了一周,JDBC方式又能正常连接,当然ODBC方式也能正常使用。
再后来一段时间,JDBC方式又不行了,而ODBC方式没有问题。
感觉JDBC连接方式受服务器限制一样,不知道是不是数据库系统有什么策略或规则使JDBC方式这么不稳定。
请大家解答。
谢谢。

另外ODBC连接方式不是在所有机器上都行。房间里有2台机器特别例外,从来没有使用ODBC方式成功连接过数据库。这2台机器上进入系统数据源管理,设置ODBC时,总是提示 数据库服务不存在或者被拒绝。
[b]问题补充:[/b]
先谢谢大家的解答。

我检查过该数据库很早以前就patch到了sp4

这个问题在一年多前出现过两次。后来问题消失了。
这2个月来,是不是就出现该问题。时好时坏。
所以很恼火。

前段时间就把jdbc的连接模式更改为了odbc模式。
改模式,花了不少精力,odbc似乎特别娇气,很多地方的严格要求写。
如果说odbc都能正常连上,我也就罢了,改为odbc。
可是偏偏有2个机器,拼死也不能通过jdbc和odbc连接。
odbc报错显示为 连接未找到或者连接被拒绝。

我认为odbc也不保险。还是想让服务器能支持jdbc连接。

至于jtds驱动,我记得曾试过一次,和jdbc一样的连不上。
错误依然是那么简单的 establish error。

下周一我再用netstat -an 检查一下,另外再用jtds试试看。

[b]问题补充:[/b]
Java程序连接MS Sql server 2000数据库
原来使用的JDBC连接方式,一切正常。
后来很长一段时间后,发生JDBC不能连接数据库,更换为ODBC连接方式,居然没有问题。
然后过了一周,JDBC方式又能正常连接,当然ODBC方式也能正常使用。
再后来一段时间,JDBC方式又不行了,而ODBC方式没有问题。
感觉JDBC连接方式受服务器限制一样,不知道是不是数据库系统有什么策略或规则使JDBC方式这么不稳定。
请大家解答。
谢谢。

另外ODBC连接方式不是在所有机器上都行。房间里有2台机器特别例外,从来没有使用ODBC方式成功连接过数据库。这2台机器上进入系统数据源管理,设置ODBC时,总是提示 数据库服务不存在或者被拒绝。
问题补充:
先谢谢大家的解答。

我检查过该数据库很早以前就patch到了sp4

这个问题在一年多前出现过两次。后来问题消失了。
这2个月来,是不是就出现该问题。时好时坏。
所以很恼火。

前段时间就把jdbc的连接模式更改为了odbc模式。
改模式,花了不少精力,odbc似乎特别娇气,很多地方的严格要求写。
如果说odbc都能正常连上,我也就罢了,改为odbc。
可是偏偏有2个机器,拼死也不能通过jdbc和odbc连接。
odbc报错显示为 连接未找到或者连接被拒绝。

我认为odbc也不保险。还是想让服务器能支持jdbc连接。

至于jtds驱动,我记得曾试过一次,和jdbc一样的连不上。
错误依然是那么简单的 establish error。

下周一我再用netstat -an 检查一下,另外再用jtds试试看。

补充,
现在已经确定是1433端口未打开。
但是,服务器上没有 企业管理器,所以不能打开 服务器网络实用工具。
请问 服务器网络实用工具 是执行的哪个程序?
我只知道 服务器网络实用工具 是执行的

C:\WINNT\system32\cliconfg.exe 程序。
windows 2000系统,Sql 2000数据库。

[b]问题补充:[/b]
Java程序连接MS Sql server 2000数据库
原来使用的JDBC连接方式,一切正常。
后来很长一段时间后,发生JDBC不能连接数据库,更换为ODBC连接方式,居然没有问题。
然后过了一周,JDBC方式又能正常连接,当然ODBC方式也能正常使用。
再后来一段时间,JDBC方式又不行了,而ODBC方式没有问题。
感觉JDBC连接方式受服务器限制一样,不知道是不是数据库系统有什么策略或规则使JDBC方式这么不稳定。
请大家解答。
谢谢。

另外ODBC连接方式不是在所有机器上都行。房间里有2台机器特别例外,从来没有使用ODBC方式成功连接过数据库。这2台机器上进入系统数据源管理,设置ODBC时,总是提示 数据库服务不存在或者被拒绝。
问题补充:
先谢谢大家的解答。

我检查过该数据库很早以前就patch到了sp4

这个问题在一年多前出现过两次。后来问题消失了。
这2个月来,是不是就出现该问题。时好时坏。
所以很恼火。

前段时间就把jdbc的连接模式更改为了odbc模式。
改模式,花了不少精力,odbc似乎特别娇气,很多地方的严格要求写。
如果说odbc都能正常连上,我也就罢了,改为odbc。
可是偏偏有2个机器,拼死也不能通过jdbc和odbc连接。
odbc报错显示为 连接未找到或者连接被拒绝。

我认为odbc也不保险。还是想让服务器能支持jdbc连接。

至于jtds驱动,我记得曾试过一次,和jdbc一样的连不上。
错误依然是那么简单的 establish error。

下周一我再用netstat -an 检查一下,另外再用jtds试试看。

问题补充:
Java程序连接MS Sql server 2000数据库
原来使用的JDBC连接方式,一切正常。
后来很长一段时间后,发生JDBC不能连接数据库,更换为ODBC连接方式,居然没有问题。
然后过了一周,JDBC方式又能正常连接,当然ODBC方式也能正常使用。
再后来一段时间,JDBC方式又不行了,而ODBC方式没有问题。
感觉JDBC连接方式受服务器限制一样,不知道是不是数据库系统有什么策略或规则使JDBC方式这么不稳定。
请大家解答。
谢谢。

另外ODBC连接方式不是在所有机器上都行。房间里有2台机器特别例外,从来没有使用ODBC方式成功连接过数据库。这2台机器上进入系统数据源管理,设置ODBC时,总是提示 数据库服务不存在或者被拒绝。
<strong>问题补充:</strong>
先谢谢大家的解答。

我检查过该数据库很早以前就patch到了sp4

这个问题在一年多前出现过两次。后来问题消失了。
这2个月来,是不是就出现该问题。时好时坏。
所以很恼火。

前段时间就把jdbc的连接模式更改为了odbc模式。
改模式,花了不少精力,odbc似乎特别娇气,很多地方的严格要求写。
如果说odbc都能正常连上,我也就罢了,改为odbc。
可是偏偏有2个机器,拼死也不能通过jdbc和odbc连接。
odbc报错显示为 连接未找到或者连接被拒绝。

我认为odbc也不保险。还是想让服务器能支持jdbc连接。

至于jtds驱动,我记得曾试过一次,和jdbc一样的连不上。
错误依然是那么简单的 establish error。

下周一我再用netstat -an 检查一下,另外再用jtds试试看。

补充,
现在已经确定是1433端口未打开。
但是,服务器上没有 企业管理器,所以不能打开 服务器网络实用工具。
请问 服务器网络实用工具 是执行的哪个程序?
我只知道 服务器网络实用工具 是执行的

C:\WINNT\system32\cliconfg.exe 程序。
windows 2000系统,Sql 2000数据库。

2008-11-14 补充
最后一个问题。
为什么这个端口会自动开启一段时间,然后又自动关闭一段时间呢?
难道程序中写的又问题吗?如果是,那是什么问题引起的呢?
谢谢。

java程序如何可以通过name pipe协议连接数据库呢?这样以后可以避免再发生这样的问题。

连接不上的时候就用netstat -an 查看端口,肯定是1433端口有问题

sqlserver2000数据库需要打SP4补丁才能打开它的TCP服务端口1433,JDBC是采用TCP形式连接到数据库的,你可以在CMD下输入netstat -an看看你的1433端口是否打开,如果不出意外,肯定是你没有打SP4补丁

上面的回答很正确

要是没有打开就不应该有连接上的时候。是不是驱动有问题,你用的不会是ms的驱动吧,如果是就改成jTDS,这个比MS提供的好很多。

[quote]现在已经确定是1433端口未打开[/quote]
可能是你的SP4补丁(sqlserver的SP4,不是你操作系统的 :wink: )根本就没有打成功,这种情况即便你找到sqlserver的配置工具也于事无补,建议重新打SP4

[quote]为什么这个端口会自动开启一段时间,然后又自动关闭一段时间呢?
难道程序中写的又问题吗?[/quote]
呵呵,如果你的JDBC程序能把sqlserver的端口搞趴下我真服了,这种情况一般不会发生的,顺便说句,sqlserver2000数据库本来在2003上就不被支持,这点安装的时候的提示也已经明确说明了,微软也不会提供支持的,你可以考虑换成sqlserver2005,应该完全兼容你的sqlserver2000数据库。
[quote]java程序如何可以通过name pipe协议连接数据库呢?[/quote]
用这个跟用ODBC没啥区别!