我的机器上装有2000和2005,我用2000的查询分析器连接2个服务器的时候,输入的服务器的字串分别是:2000=JAVA6\SQL2000,2005=JAVA6,(我的机器名是JAVA6),而这样,我在JSP页面中使用的JDBC连接的URL是:jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=mydb.这样的话,我竟然就连上了2005的sql服务器,而我也不知道怎么样来改这个URL,才能让我连上2000的sql服务器,请各位帮忙
26 个解决方案
#1
你发现你的sql2000的数据库在sql2005里也能看到没?
所以是向下兼容的~
推荐~你的jdbc要用2005的sqljdbc.jar包~
这样你页是向下兼容的~
不知道这样解释明白不?
所以是向下兼容的~
推荐~你的jdbc要用2005的sqljdbc.jar包~
这样你页是向下兼容的~
不知道这样解释明白不?
#2
我明白楼上朋友的意思,而且我的JDBC包2005和2000的都有,但是毕竟还是2个数据库吧,访问其中某一个和访问另一个的连接URL应该是不一样的吧,可是我不知道该怎么拼这个URL字串才能访问到那个2000的服务
#3
在sql server 2000 中加载驱动和URL路径的语句是
String driverName = "com.microsoft.jdbc.sqlserver.SQLServerDriver";
String dbURL = "jdbc:microsoft:sqlserver://localhost:1433; DatabaseName=sample";
而sql server 2005 中加载驱动和url的语句则为
String driverName = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
String dbURL = "jdbc:sqlserver://localhost:1433; DatabaseName=sample";
如果写法错误将会找不到驱动
String driverName = "com.microsoft.jdbc.sqlserver.SQLServerDriver";
String dbURL = "jdbc:microsoft:sqlserver://localhost:1433; DatabaseName=sample";
而sql server 2005 中加载驱动和url的语句则为
String driverName = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
String dbURL = "jdbc:sqlserver://localhost:1433; DatabaseName=sample";
如果写法错误将会找不到驱动
#4
你把端口号修改一下试试
#5
停掉 2005的服务,重启2000的服务就行了。
原因我不清楚,好像不只是端口的问题(也许吧)。
我一般2个实力能同时运行,但只能连其中一个。
原因我不清楚,好像不只是端口的问题(也许吧)。
我一般2个实力能同时运行,但只能连其中一个。
#6
你的URL是2005的包的,那应该默认的会先连2005,你把URL改成2000的试下,导入的包也要是2000的。
#7
呵呵,如果2000和2005都在运行的话,肯定端口是不同的。你看看在修改url吧。
#8
我觉的这样应该可以吧
#9
但是他要同时使用两个好象不能关...
真的可以用2000的驱动连2005?
真的可以用2000的驱动连2005?
#10
用2000的驱动连不上2005
不过用2005的驱动可以连上2000。
好像是只能连一个。
不过用2005的驱动可以连上2000。
好像是只能连一个。
#11
端口被占用了..停掉一个吧.楼主.
#12
应该是端口的问题,至少其中的一个不是1433了.可能是sq2000
楼主可以打开你sql2000的企业管理器,右键你的服务->属性->网络配置(在下方)->选中右边的TCP/IP点属性,这样可以修改你sql2000的端口了.
楼主试试吧
楼主可以打开你sql2000的企业管理器,右键你的服务->属性->网络配置(在下方)->选中右边的TCP/IP点属性,这样可以修改你sql2000的端口了.
楼主试试吧
#13
楼上说得对,这两个服务是不可能同时都占用1433端口的,你需要修改其中一个服务的端口。
楼上告诉你如何修改2000的端口,你也可以修改MSSQL2005的端口,方式为:
开始->MSSQL2005->配置工具->SQL Server Configuration Manager
SQL Server 2005网络配置->XXXX的协议
双击右边TCP/IP
对话框中选IP地址选项卡中最后一个IP端口
此时,你的SQL的URL连接字符串中服务器后的1433要和这个数字对应
注:操作MSSQL最好用jtds驱动,微软提供的驱动在字符集上有问题
楼上告诉你如何修改2000的端口,你也可以修改MSSQL2005的端口,方式为:
开始->MSSQL2005->配置工具->SQL Server Configuration Manager
SQL Server 2005网络配置->XXXX的协议
双击右边TCP/IP
对话框中选IP地址选项卡中最后一个IP端口
此时,你的SQL的URL连接字符串中服务器后的1433要和这个数字对应
注:操作MSSQL最好用jtds驱动,微软提供的驱动在字符集上有问题
#14
还有就是sqlserver2000直连需要一个安装补丁...才能连接上.
#15
端口是不同的吧 ??
#16
我遇到过,确实连不上2000的。
不过我试了一种方法连上了。就是对你2000中的数据库建立一个数据源,然后采用连接数据源的方法,我当时是成功的,你可以试试
不过我试了一种方法连上了。就是对你2000中的数据库建立一个数据源,然后采用连接数据源的方法,我当时是成功的,你可以试试
#17
修改端口号~~
还有我想问下 用JAVA开发的时候 SQL2000有3个JAR包~
SQL2005好象是一个JAR包吧~~
结合一下 看看能用不
还有我想问下 用JAVA开发的时候 SQL2000有3个JAR包~
SQL2005好象是一个JAR包吧~~
结合一下 看看能用不
#18
连接字不同。。。细微差别
#19
呵呵,
以前我做过,问题出在url , 因为时间相隔了一年多了,我也忘记了,
我没有具体的环境(一台机器上挂两个数据库实例)也就一会半会很难准确的一下给你答案.
好象就是// \\ 之间的区别,你可以自己试试.
url = "jdbc:sqlserver:\\localhost:1433; DatabaseName=sample";
我记得那个时候我在一家外企单位,美国的老总数据库升级.装了个sqlserver 2005 ,
旧的数据库又不敢删除掉,怕出什么问题.
结果就出现了你类似的问题,因为美国是白天,这边是晚上,老总等着向客户演示,结果急啊.弄得我一晚上都没睡,
最后还是终于解决了,问题就在url 上,你多试试吧.
以前我做过,问题出在url , 因为时间相隔了一年多了,我也忘记了,
我没有具体的环境(一台机器上挂两个数据库实例)也就一会半会很难准确的一下给你答案.
好象就是// \\ 之间的区别,你可以自己试试.
url = "jdbc:sqlserver:\\localhost:1433; DatabaseName=sample";
我记得那个时候我在一家外企单位,美国的老总数据库升级.装了个sqlserver 2005 ,
旧的数据库又不敢删除掉,怕出什么问题.
结果就出现了你类似的问题,因为美国是白天,这边是晚上,老总等着向客户演示,结果急啊.弄得我一晚上都没睡,
最后还是终于解决了,问题就在url 上,你多试试吧.
#20
没用过sqlserver,一直用的是oracle,在oracle里,oracle9i和oracle10g安装在同一台机器的话,端口肯定不会是一个端口的,不知道sqlserver是不是也这样?
#21
我现在在补充下,有点印象了,
sqlserver 开始装的时候它有个默认的实例名称.默认的实例名称好象是sqlserver,
你在装sqlserver2005 肯定叫你输入实例名称.(因为不能重复,你装的sqlserver2000已经默认的是sqlserver,
在不可能sqlserver2005的实例名也是sqlserver,也不能是sqlserver,我猜测你可能你装的sqlsever2005的实例名称也是sqlserver)这就为什么你总连接到sql2005上去了.注意不要与sqlserver2000实例名称重复.
url = "jdbc:sqlserver://localhost:1433; DatabaseName=sample"; 默认的连接是会成这样的
"jdbc:sqlserver://localhost\\/sqlserver\\:1433; DatabaseName=sample";我不能保证我写的\\ //格式什么的是对的,但肯定一点的是你想显示的指定去连接哪个数据库实例,一定要用\\ // 连接字符.指定数据库实例
反正在这// \\ 什么的字符写法是很有讲究的.只好你去试了.我不能肯定,时间长了忘记了,肯定一点的是,肯定要用显示的指定数据库实例.我只能帮到LZ 这里了,我想应该很容易试出来的.
#22
注意,安装的默认数据库实例,也有可能是你的机器名称.我看到你的两个数据库实例名都是JAVA6.结合我上面说的.
这就是解决问题的关键地方
#23
感谢各位的帮助,问题解决了,原因是端口号的问题.
我想当然的认为sql2000的实例的端口是1433,实际上我是先装的2005,后装的2000.竟发现sql2000的端口号被默认成了:9157(随即分配的?)
【1.连接字串改端口(9157)之后:
com.microsoft.sqlserver.jdbc.SQLServerDriver
jdbc:sqlserver://127.0.0.1:9157; DatabaseName=mydb2000,
jdbc连接sql2000成功.
【2.并测试了同一机器2个实例2000\2005,的同时访问
com.microsoft.sqlserver.jdbc.SQLServerDriver
jdbc:sqlserver://127.0.0.1:9157; DatabaseName=mydb2000
jdbc:sqlserver://127.0.0.1:1433; DatabaseName=mydb2005,
页面输出信息:
Microsoft SQL Server 2000 - 8.00.2039 (Intel X86) May 3 2005 23:18:38 Copyright (c) 1988-2003 Microsoft Corporation Personal Edition on Windows NT 5.1 (Build 2600: Service Pack 3)
Microsoft SQL Server 2005 - 9.00.3042.00 (Intel X86) Feb 9 2007 22:47:07 Copyright (c) 1988-2005 Microsoft Corporation Developer Edition on Windows NT 5.1 (Build 2600: Service Pack 3)
jdbc同时连接同一机器2个实例2000\2005,不同端口情况下,连接成功.
可见,楼上朋友说的'2个实例只能连接一个',是不对的
【3.没有测试楼上朋友说的用不同实例名来访问不同实例.因为无须实例名,更改端口号即可分别同时访问
【4.测试了楼上朋友所说的,2000\2005对应使用的不同ClassName和url:
2000,
String driverName = "com.microsoft.jdbc.sqlserver.SQLServerDriver";
String dbURL = "jdbc:microsoft:sqlserver://localhost:1433; DatabaseName=sample";
2005,
String driverName = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
String dbURL = "jdbc:sqlserver://localhost:1433; DatabaseName=sample";
同样得到了如【2.的页面输出效果,连接成功
【5.以上都是在2000\2005的jdbc驱动都放入lib下的使用情况
下为测试lib中只有2000或2005jdbc驱动的情况,结果如下:
1.只有2005jdbc驱动(sqljdbc.jar)时,只能用如下的URL格式和ClassName:
String driverName = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
String dbURL = "jdbc:sqlserver://localhost:1433; DatabaseName=sample";
2.只有2000jdbc驱动(msbase.jar,mssqlserver.jar,msutil.jar)时:
如【4.中的2种ClassName和2中数据库访问URL,两两任意组合都可同时访问2000\2005的sqlserver服务
可见2个驱动都存在时,ClassName和Url的使用,2种都可;
只有使用2005jdbc驱动时,不可使用如下ClassName和Url:
String driverName = "com.microsoft.jdbc.sqlserver.SQLServerDriver";
String dbURL = "jdbc:microsoft:sqlserver://localhost:1433; DatabaseName=sample";
我想当然的认为sql2000的实例的端口是1433,实际上我是先装的2005,后装的2000.竟发现sql2000的端口号被默认成了:9157(随即分配的?)
【1.连接字串改端口(9157)之后:
com.microsoft.sqlserver.jdbc.SQLServerDriver
jdbc:sqlserver://127.0.0.1:9157; DatabaseName=mydb2000,
jdbc连接sql2000成功.
【2.并测试了同一机器2个实例2000\2005,的同时访问
com.microsoft.sqlserver.jdbc.SQLServerDriver
jdbc:sqlserver://127.0.0.1:9157; DatabaseName=mydb2000
jdbc:sqlserver://127.0.0.1:1433; DatabaseName=mydb2005,
页面输出信息:
Microsoft SQL Server 2000 - 8.00.2039 (Intel X86) May 3 2005 23:18:38 Copyright (c) 1988-2003 Microsoft Corporation Personal Edition on Windows NT 5.1 (Build 2600: Service Pack 3)
Microsoft SQL Server 2005 - 9.00.3042.00 (Intel X86) Feb 9 2007 22:47:07 Copyright (c) 1988-2005 Microsoft Corporation Developer Edition on Windows NT 5.1 (Build 2600: Service Pack 3)
jdbc同时连接同一机器2个实例2000\2005,不同端口情况下,连接成功.
可见,楼上朋友说的'2个实例只能连接一个',是不对的
【3.没有测试楼上朋友说的用不同实例名来访问不同实例.因为无须实例名,更改端口号即可分别同时访问
【4.测试了楼上朋友所说的,2000\2005对应使用的不同ClassName和url:
2000,
String driverName = "com.microsoft.jdbc.sqlserver.SQLServerDriver";
String dbURL = "jdbc:microsoft:sqlserver://localhost:1433; DatabaseName=sample";
2005,
String driverName = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
String dbURL = "jdbc:sqlserver://localhost:1433; DatabaseName=sample";
同样得到了如【2.的页面输出效果,连接成功
【5.以上都是在2000\2005的jdbc驱动都放入lib下的使用情况
下为测试lib中只有2000或2005jdbc驱动的情况,结果如下:
1.只有2005jdbc驱动(sqljdbc.jar)时,只能用如下的URL格式和ClassName:
String driverName = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
String dbURL = "jdbc:sqlserver://localhost:1433; DatabaseName=sample";
2.只有2000jdbc驱动(msbase.jar,mssqlserver.jar,msutil.jar)时:
如【4.中的2种ClassName和2中数据库访问URL,两两任意组合都可同时访问2000\2005的sqlserver服务
可见2个驱动都存在时,ClassName和Url的使用,2种都可;
只有使用2005jdbc驱动时,不可使用如下ClassName和Url:
String driverName = "com.microsoft.jdbc.sqlserver.SQLServerDriver";
String dbURL = "jdbc:microsoft:sqlserver://localhost:1433; DatabaseName=sample";
#24
Microsoft SQL Sever 2005 JDBC Driver 1.2 支持连接sql server 2005和sql server 2000数据库。
官方下载地址:http://www.microsoft.com/downloads/details.aspx?displaylang=zh-cn&FamilyID=c47053eb-3b64-4794-950d-81e1ec91c1ba
SQL Server 2005 数据库连接字符串:
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver").newInstance();
Connection conn = java.sql.DriverManager.getConnection("jdbc:sqlserver://数据库服务器名或地址:1433; DatabaseName=数据库名", "用户名", "密码");
此方法也可以连接SQL server 2000数据库。
需要注意的是,与SQL Server 2000 JDBC比较,驱动对象名和连接字符串都变了
SQL Server 2000 数据库连接字符串:
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();
Connection conn = java.sql.DriverManager.getConnection("jdbc:microsoft:sqlserver://数据库服务器名或地址:1433; DatabaseName=数据库名", "用户名", "密码");
本人做了一个简单的测试,用同一个应用程序分别用sql 2005 jdbc 1.2和sql 2000 jdbc sp3连接相同的数据库服
务器,并跑相同的应用,未发现较大的性能差别。并且,考虑到代码的共用性,我们是否应该使用sql 2005 jdbc
来连接sql 2000数据库呢?
官方下载地址:http://www.microsoft.com/downloads/details.aspx?displaylang=zh-cn&FamilyID=c47053eb-3b64-4794-950d-81e1ec91c1ba
SQL Server 2005 数据库连接字符串:
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver").newInstance();
Connection conn = java.sql.DriverManager.getConnection("jdbc:sqlserver://数据库服务器名或地址:1433; DatabaseName=数据库名", "用户名", "密码");
此方法也可以连接SQL server 2000数据库。
需要注意的是,与SQL Server 2000 JDBC比较,驱动对象名和连接字符串都变了
SQL Server 2000 数据库连接字符串:
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();
Connection conn = java.sql.DriverManager.getConnection("jdbc:microsoft:sqlserver://数据库服务器名或地址:1433; DatabaseName=数据库名", "用户名", "密码");
本人做了一个简单的测试,用同一个应用程序分别用sql 2005 jdbc 1.2和sql 2000 jdbc sp3连接相同的数据库服
务器,并跑相同的应用,未发现较大的性能差别。并且,考虑到代码的共用性,我们是否应该使用sql 2005 jdbc
来连接sql 2000数据库呢?
#25
顶支持
#26
各自对应一个端口号,类似1433、80这种
#1
你发现你的sql2000的数据库在sql2005里也能看到没?
所以是向下兼容的~
推荐~你的jdbc要用2005的sqljdbc.jar包~
这样你页是向下兼容的~
不知道这样解释明白不?
所以是向下兼容的~
推荐~你的jdbc要用2005的sqljdbc.jar包~
这样你页是向下兼容的~
不知道这样解释明白不?
#2
我明白楼上朋友的意思,而且我的JDBC包2005和2000的都有,但是毕竟还是2个数据库吧,访问其中某一个和访问另一个的连接URL应该是不一样的吧,可是我不知道该怎么拼这个URL字串才能访问到那个2000的服务
#3
在sql server 2000 中加载驱动和URL路径的语句是
String driverName = "com.microsoft.jdbc.sqlserver.SQLServerDriver";
String dbURL = "jdbc:microsoft:sqlserver://localhost:1433; DatabaseName=sample";
而sql server 2005 中加载驱动和url的语句则为
String driverName = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
String dbURL = "jdbc:sqlserver://localhost:1433; DatabaseName=sample";
如果写法错误将会找不到驱动
String driverName = "com.microsoft.jdbc.sqlserver.SQLServerDriver";
String dbURL = "jdbc:microsoft:sqlserver://localhost:1433; DatabaseName=sample";
而sql server 2005 中加载驱动和url的语句则为
String driverName = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
String dbURL = "jdbc:sqlserver://localhost:1433; DatabaseName=sample";
如果写法错误将会找不到驱动
#4
你把端口号修改一下试试
#5
停掉 2005的服务,重启2000的服务就行了。
原因我不清楚,好像不只是端口的问题(也许吧)。
我一般2个实力能同时运行,但只能连其中一个。
原因我不清楚,好像不只是端口的问题(也许吧)。
我一般2个实力能同时运行,但只能连其中一个。
#6
你的URL是2005的包的,那应该默认的会先连2005,你把URL改成2000的试下,导入的包也要是2000的。
#7
呵呵,如果2000和2005都在运行的话,肯定端口是不同的。你看看在修改url吧。
#8
我觉的这样应该可以吧
#9
但是他要同时使用两个好象不能关...
真的可以用2000的驱动连2005?
真的可以用2000的驱动连2005?
#10
用2000的驱动连不上2005
不过用2005的驱动可以连上2000。
好像是只能连一个。
不过用2005的驱动可以连上2000。
好像是只能连一个。
#11
端口被占用了..停掉一个吧.楼主.
#12
应该是端口的问题,至少其中的一个不是1433了.可能是sq2000
楼主可以打开你sql2000的企业管理器,右键你的服务->属性->网络配置(在下方)->选中右边的TCP/IP点属性,这样可以修改你sql2000的端口了.
楼主试试吧
楼主可以打开你sql2000的企业管理器,右键你的服务->属性->网络配置(在下方)->选中右边的TCP/IP点属性,这样可以修改你sql2000的端口了.
楼主试试吧
#13
楼上说得对,这两个服务是不可能同时都占用1433端口的,你需要修改其中一个服务的端口。
楼上告诉你如何修改2000的端口,你也可以修改MSSQL2005的端口,方式为:
开始->MSSQL2005->配置工具->SQL Server Configuration Manager
SQL Server 2005网络配置->XXXX的协议
双击右边TCP/IP
对话框中选IP地址选项卡中最后一个IP端口
此时,你的SQL的URL连接字符串中服务器后的1433要和这个数字对应
注:操作MSSQL最好用jtds驱动,微软提供的驱动在字符集上有问题
楼上告诉你如何修改2000的端口,你也可以修改MSSQL2005的端口,方式为:
开始->MSSQL2005->配置工具->SQL Server Configuration Manager
SQL Server 2005网络配置->XXXX的协议
双击右边TCP/IP
对话框中选IP地址选项卡中最后一个IP端口
此时,你的SQL的URL连接字符串中服务器后的1433要和这个数字对应
注:操作MSSQL最好用jtds驱动,微软提供的驱动在字符集上有问题
#14
还有就是sqlserver2000直连需要一个安装补丁...才能连接上.
#15
端口是不同的吧 ??
#16
我遇到过,确实连不上2000的。
不过我试了一种方法连上了。就是对你2000中的数据库建立一个数据源,然后采用连接数据源的方法,我当时是成功的,你可以试试
不过我试了一种方法连上了。就是对你2000中的数据库建立一个数据源,然后采用连接数据源的方法,我当时是成功的,你可以试试
#17
修改端口号~~
还有我想问下 用JAVA开发的时候 SQL2000有3个JAR包~
SQL2005好象是一个JAR包吧~~
结合一下 看看能用不
还有我想问下 用JAVA开发的时候 SQL2000有3个JAR包~
SQL2005好象是一个JAR包吧~~
结合一下 看看能用不
#18
连接字不同。。。细微差别
#19
呵呵,
以前我做过,问题出在url , 因为时间相隔了一年多了,我也忘记了,
我没有具体的环境(一台机器上挂两个数据库实例)也就一会半会很难准确的一下给你答案.
好象就是// \\ 之间的区别,你可以自己试试.
url = "jdbc:sqlserver:\\localhost:1433; DatabaseName=sample";
我记得那个时候我在一家外企单位,美国的老总数据库升级.装了个sqlserver 2005 ,
旧的数据库又不敢删除掉,怕出什么问题.
结果就出现了你类似的问题,因为美国是白天,这边是晚上,老总等着向客户演示,结果急啊.弄得我一晚上都没睡,
最后还是终于解决了,问题就在url 上,你多试试吧.
以前我做过,问题出在url , 因为时间相隔了一年多了,我也忘记了,
我没有具体的环境(一台机器上挂两个数据库实例)也就一会半会很难准确的一下给你答案.
好象就是// \\ 之间的区别,你可以自己试试.
url = "jdbc:sqlserver:\\localhost:1433; DatabaseName=sample";
我记得那个时候我在一家外企单位,美国的老总数据库升级.装了个sqlserver 2005 ,
旧的数据库又不敢删除掉,怕出什么问题.
结果就出现了你类似的问题,因为美国是白天,这边是晚上,老总等着向客户演示,结果急啊.弄得我一晚上都没睡,
最后还是终于解决了,问题就在url 上,你多试试吧.
#20
没用过sqlserver,一直用的是oracle,在oracle里,oracle9i和oracle10g安装在同一台机器的话,端口肯定不会是一个端口的,不知道sqlserver是不是也这样?
#21
我现在在补充下,有点印象了,
sqlserver 开始装的时候它有个默认的实例名称.默认的实例名称好象是sqlserver,
你在装sqlserver2005 肯定叫你输入实例名称.(因为不能重复,你装的sqlserver2000已经默认的是sqlserver,
在不可能sqlserver2005的实例名也是sqlserver,也不能是sqlserver,我猜测你可能你装的sqlsever2005的实例名称也是sqlserver)这就为什么你总连接到sql2005上去了.注意不要与sqlserver2000实例名称重复.
url = "jdbc:sqlserver://localhost:1433; DatabaseName=sample"; 默认的连接是会成这样的
"jdbc:sqlserver://localhost\\/sqlserver\\:1433; DatabaseName=sample";我不能保证我写的\\ //格式什么的是对的,但肯定一点的是你想显示的指定去连接哪个数据库实例,一定要用\\ // 连接字符.指定数据库实例
反正在这// \\ 什么的字符写法是很有讲究的.只好你去试了.我不能肯定,时间长了忘记了,肯定一点的是,肯定要用显示的指定数据库实例.我只能帮到LZ 这里了,我想应该很容易试出来的.
#22
注意,安装的默认数据库实例,也有可能是你的机器名称.我看到你的两个数据库实例名都是JAVA6.结合我上面说的.
这就是解决问题的关键地方
#23
感谢各位的帮助,问题解决了,原因是端口号的问题.
我想当然的认为sql2000的实例的端口是1433,实际上我是先装的2005,后装的2000.竟发现sql2000的端口号被默认成了:9157(随即分配的?)
【1.连接字串改端口(9157)之后:
com.microsoft.sqlserver.jdbc.SQLServerDriver
jdbc:sqlserver://127.0.0.1:9157; DatabaseName=mydb2000,
jdbc连接sql2000成功.
【2.并测试了同一机器2个实例2000\2005,的同时访问
com.microsoft.sqlserver.jdbc.SQLServerDriver
jdbc:sqlserver://127.0.0.1:9157; DatabaseName=mydb2000
jdbc:sqlserver://127.0.0.1:1433; DatabaseName=mydb2005,
页面输出信息:
Microsoft SQL Server 2000 - 8.00.2039 (Intel X86) May 3 2005 23:18:38 Copyright (c) 1988-2003 Microsoft Corporation Personal Edition on Windows NT 5.1 (Build 2600: Service Pack 3)
Microsoft SQL Server 2005 - 9.00.3042.00 (Intel X86) Feb 9 2007 22:47:07 Copyright (c) 1988-2005 Microsoft Corporation Developer Edition on Windows NT 5.1 (Build 2600: Service Pack 3)
jdbc同时连接同一机器2个实例2000\2005,不同端口情况下,连接成功.
可见,楼上朋友说的'2个实例只能连接一个',是不对的
【3.没有测试楼上朋友说的用不同实例名来访问不同实例.因为无须实例名,更改端口号即可分别同时访问
【4.测试了楼上朋友所说的,2000\2005对应使用的不同ClassName和url:
2000,
String driverName = "com.microsoft.jdbc.sqlserver.SQLServerDriver";
String dbURL = "jdbc:microsoft:sqlserver://localhost:1433; DatabaseName=sample";
2005,
String driverName = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
String dbURL = "jdbc:sqlserver://localhost:1433; DatabaseName=sample";
同样得到了如【2.的页面输出效果,连接成功
【5.以上都是在2000\2005的jdbc驱动都放入lib下的使用情况
下为测试lib中只有2000或2005jdbc驱动的情况,结果如下:
1.只有2005jdbc驱动(sqljdbc.jar)时,只能用如下的URL格式和ClassName:
String driverName = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
String dbURL = "jdbc:sqlserver://localhost:1433; DatabaseName=sample";
2.只有2000jdbc驱动(msbase.jar,mssqlserver.jar,msutil.jar)时:
如【4.中的2种ClassName和2中数据库访问URL,两两任意组合都可同时访问2000\2005的sqlserver服务
可见2个驱动都存在时,ClassName和Url的使用,2种都可;
只有使用2005jdbc驱动时,不可使用如下ClassName和Url:
String driverName = "com.microsoft.jdbc.sqlserver.SQLServerDriver";
String dbURL = "jdbc:microsoft:sqlserver://localhost:1433; DatabaseName=sample";
我想当然的认为sql2000的实例的端口是1433,实际上我是先装的2005,后装的2000.竟发现sql2000的端口号被默认成了:9157(随即分配的?)
【1.连接字串改端口(9157)之后:
com.microsoft.sqlserver.jdbc.SQLServerDriver
jdbc:sqlserver://127.0.0.1:9157; DatabaseName=mydb2000,
jdbc连接sql2000成功.
【2.并测试了同一机器2个实例2000\2005,的同时访问
com.microsoft.sqlserver.jdbc.SQLServerDriver
jdbc:sqlserver://127.0.0.1:9157; DatabaseName=mydb2000
jdbc:sqlserver://127.0.0.1:1433; DatabaseName=mydb2005,
页面输出信息:
Microsoft SQL Server 2000 - 8.00.2039 (Intel X86) May 3 2005 23:18:38 Copyright (c) 1988-2003 Microsoft Corporation Personal Edition on Windows NT 5.1 (Build 2600: Service Pack 3)
Microsoft SQL Server 2005 - 9.00.3042.00 (Intel X86) Feb 9 2007 22:47:07 Copyright (c) 1988-2005 Microsoft Corporation Developer Edition on Windows NT 5.1 (Build 2600: Service Pack 3)
jdbc同时连接同一机器2个实例2000\2005,不同端口情况下,连接成功.
可见,楼上朋友说的'2个实例只能连接一个',是不对的
【3.没有测试楼上朋友说的用不同实例名来访问不同实例.因为无须实例名,更改端口号即可分别同时访问
【4.测试了楼上朋友所说的,2000\2005对应使用的不同ClassName和url:
2000,
String driverName = "com.microsoft.jdbc.sqlserver.SQLServerDriver";
String dbURL = "jdbc:microsoft:sqlserver://localhost:1433; DatabaseName=sample";
2005,
String driverName = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
String dbURL = "jdbc:sqlserver://localhost:1433; DatabaseName=sample";
同样得到了如【2.的页面输出效果,连接成功
【5.以上都是在2000\2005的jdbc驱动都放入lib下的使用情况
下为测试lib中只有2000或2005jdbc驱动的情况,结果如下:
1.只有2005jdbc驱动(sqljdbc.jar)时,只能用如下的URL格式和ClassName:
String driverName = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
String dbURL = "jdbc:sqlserver://localhost:1433; DatabaseName=sample";
2.只有2000jdbc驱动(msbase.jar,mssqlserver.jar,msutil.jar)时:
如【4.中的2种ClassName和2中数据库访问URL,两两任意组合都可同时访问2000\2005的sqlserver服务
可见2个驱动都存在时,ClassName和Url的使用,2种都可;
只有使用2005jdbc驱动时,不可使用如下ClassName和Url:
String driverName = "com.microsoft.jdbc.sqlserver.SQLServerDriver";
String dbURL = "jdbc:microsoft:sqlserver://localhost:1433; DatabaseName=sample";
#24
Microsoft SQL Sever 2005 JDBC Driver 1.2 支持连接sql server 2005和sql server 2000数据库。
官方下载地址:http://www.microsoft.com/downloads/details.aspx?displaylang=zh-cn&FamilyID=c47053eb-3b64-4794-950d-81e1ec91c1ba
SQL Server 2005 数据库连接字符串:
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver").newInstance();
Connection conn = java.sql.DriverManager.getConnection("jdbc:sqlserver://数据库服务器名或地址:1433; DatabaseName=数据库名", "用户名", "密码");
此方法也可以连接SQL server 2000数据库。
需要注意的是,与SQL Server 2000 JDBC比较,驱动对象名和连接字符串都变了
SQL Server 2000 数据库连接字符串:
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();
Connection conn = java.sql.DriverManager.getConnection("jdbc:microsoft:sqlserver://数据库服务器名或地址:1433; DatabaseName=数据库名", "用户名", "密码");
本人做了一个简单的测试,用同一个应用程序分别用sql 2005 jdbc 1.2和sql 2000 jdbc sp3连接相同的数据库服
务器,并跑相同的应用,未发现较大的性能差别。并且,考虑到代码的共用性,我们是否应该使用sql 2005 jdbc
来连接sql 2000数据库呢?
官方下载地址:http://www.microsoft.com/downloads/details.aspx?displaylang=zh-cn&FamilyID=c47053eb-3b64-4794-950d-81e1ec91c1ba
SQL Server 2005 数据库连接字符串:
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver").newInstance();
Connection conn = java.sql.DriverManager.getConnection("jdbc:sqlserver://数据库服务器名或地址:1433; DatabaseName=数据库名", "用户名", "密码");
此方法也可以连接SQL server 2000数据库。
需要注意的是,与SQL Server 2000 JDBC比较,驱动对象名和连接字符串都变了
SQL Server 2000 数据库连接字符串:
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();
Connection conn = java.sql.DriverManager.getConnection("jdbc:microsoft:sqlserver://数据库服务器名或地址:1433; DatabaseName=数据库名", "用户名", "密码");
本人做了一个简单的测试,用同一个应用程序分别用sql 2005 jdbc 1.2和sql 2000 jdbc sp3连接相同的数据库服
务器,并跑相同的应用,未发现较大的性能差别。并且,考虑到代码的共用性,我们是否应该使用sql 2005 jdbc
来连接sql 2000数据库呢?
#25
顶支持
#26
各自对应一个端口号,类似1433、80这种