1.问题:Error establishing socket.
答:估计是没没打开1433,即可能没更新SP4
用CMD命令netstat查下看看又没1433的端口,看是没启用还是被占用
netstat -an
结果:1433没开,所以思路可以去更新下SP4,
怎么知道sql server2000没更新SP4,
在分析查询器里执行:select @@version
Microsoft SQL Server 2000 - 8.00.194注:不是sp4
参考 select @@version 对应的 sql server 版本:
6.00.121 v6.0
6.00.124 v6.0 SP1
6.00.139 v6.0 SP2
6.00.151 v6.0 SP3
6.50.201 v6.5
6.50.213 v6.5 SP1
6.50.240 v6.5 SP2
6.50.258 v6.5 SP3
6.50.281 v6.5 SP4
6.50.415 v6.5 SP5
6.50.416 v6.5 SP5a
7.00.623 v7.0
7.00.699 v7.0 SP1
7.00.842 v7.0 SP2
7.00.961 v7.0 SP3
7.00.1063 v7.0 SP4
8.00.194 v2000
8.00.384 v2000 SP1
8.00.534 v2000 SP2
8.00.760 v2000 SP3
8.00.2039 v2000 SP4
9.00.1399.06 v2005
9.00.2047.00 V2005 SP1
如何安装SQL server 2000 SP4补丁2009-04-11 14:14
首先下载了一个SQL Server 2000的个人版安装上去,安装后重启了一下,重新完毕经过测试,SQL是可以正常使用的.
随后在MicroSoft的官方网站(切记最好是官网下载,有些的下载版本解压后不带setup.bat文件)
下载了SP4的补丁:SQL2000-KB884525-SP4-x86-CHS.EXE.双击开始安装后会解压缩一个文件夹到C:\SQL2KSP4,文件夹里面有个setup.bat文件,
双击后开始正常的安装补丁步骤,完成安装。
如何知道SQL server 2000是否打过sp4补丁?
1.在查询分析器里master数据库下执行select @@version
对比安装补丁前后的版本..下面是打了sp4后的个人版执行select @@version后的信息..
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 2)
2.开始->运行 cmd
netstat -an
看到TCP 0.0.0.0:1433 0.0.0.0:0 LISTENING (打补丁就是为了开启1433端口)
即sp4补丁安装成功..
3.企业管理器打开你的数据库,然后在那个数据节点上
右键-属性-常规选项卡
里面有个产品版本
2:如果1433端口被占用,怎么改动sql server 对外的端口
企业管理器>数据库实例,右键>常规>网络配置>启用的协议,选tcp/ip>属性,就可以看到端口号
3:关于win7下的使用
因为sql Server 2000 和win7 兼容性有问题,
第一个是无法在企业管理器里建表,可以点企业管理器的文件的下一行的“*”来新建
或者可以在查询分析器用sql来建立
4:第二个是出现查询分析器无法连接上,(注意,houwen是实例名)
4.1sql server(s):LENOVO-PC\HOUWEN
4.2因为我安装的时候选得是混合模式,
所以我这选的是“sql server(s)身份验证”选项
登录:sa
密码:xx(建的时候的输入的密码)
5.取得本机上所有的实例
DECLARE @retval int
DECLARE @result varchar(500)
DECLARE @object int
DECLARE @objectList int
DECLARE @src varchar(254)
DECLARE @desc varchar(255)
DECLARE @resultsCount int
DECLARE @counter int
DECLARE @method varchar(255)
--创建SQLDMO对象
EXEC @retval = sp_OACreate 'SQLDMO.Application', @object OUT
--检查对象是否创建成功
IF @retval <> 0
BEGIN
EXEC sp_OAGetErrorInfo @object, @src OUT, @desc OUT
SELECT hr=convert(varbinary(4),@retval), Source=@src, Description=@desc
RETURN
END
--调用方法ListAvailableServers() , 为SQLDMO.NameList得到Object_ID
EXEC @retval = sp_OAMethod @object , 'ListAvailableSQlServers()' , @objectList OUT
-- 是否有错误?
IF @retval <> 0
BEGIN
EXEC sp_OAGetErrorInfo @objectList, @src OUT, @desc OUT
SELECT hr=convert(varbinary(4),@retval), Source=@src, Description=@desc
RETURN
END
--计算局域网里的服务器数量
EXEC @retval = sp_OAGetProperty @objectList , 'Count' , @resultsCount OUT
--再一次进行错误处理
IF @retval <> 0
BEGIN
EXEC sp_OAGetErrorInfo @objectList, @src OUT, @desc OUT
SELECT hr=convert(varbinary(4),@retval), Source=@src, Description=@desc
RETURN
END
--如果有服务器的话,进入处理.....
IF @resultsCount > 0
BEGIN
SET @counter = 1
DECLARE @ServersTbl table (ServerID int IDENTITY ,ServerName varchar(255))
WHILE @counter <= @resultsCount
BEGIN
--列出SQL实例:一个名字接一个名字的列出
SET @method = 'Item(' + convert(varchar(3),@counter) + ')'
EXEC @retval = sp_OAGetProperty @objectList ,@method , @result OUT
--将数据存到临时表
INSERT INTO @ServersTbl (ServerName) SELECT @result
--移到下一条记录
SET @counter = @counter + 1
END
END
ELSE
BEGIN
SET @result = 'No Servers around you'
INSERT INTO @ServersTbl (ServerName) SELECT @result
END
--释放对象
EXEC @retval = sp_OADestroy @object
IF @retval <> 0
BEGIN
EXEC sp_OAGetErrorInfo @object, @src OUT, @desc OUT
SELECT hr=convert(varbinary(4),@retval), Source=@src, Description=@desc
RETURN
END
--好了,可以列出所有可用的实例了 ....
SELECT * FROM @ServersTbl
GO
6.我的代码为Integer value = (Integer)queryForObject(...)
结果一执行到该语句就报以下错误.我在sqlserver监视器中发现sql语句已正确发送到sqlserver上,不知道以下错误是发生原因是什么?
--- The error occurred in sqlmaps/Machininfo.xml.
--- The error occurred while applying a result map.
--- Check the checkUser-AutoResultMap.
--- Check the result mapping for the 'value ' property.
--- Cause: java.sql.SQLException: [Microsoft][SQLServer 2000
Driver for JDBC]Can 't start a cloned connection while in manual transaction mode.
原因:是SQLSERVER需要把URL加上一个参数:把SelectMethod设置为cursor,而不是direct
connection = DriverManager.getConnection "jdbc:microsoft:sqlserver://hie:1433;SelectMethod=cursor ","test ","test ");
不加这个参数默认SelectMethod=direct
解决方案:(1)
你在尝试打开一个克隆连接,有两种解决办法: 每个数据库的连接在执行完毕后,关闭,
第二,在连接时,判断是否已经有连接存在,有则使用现成的连接。
数据库连接可以设置成一个常量,不需要到处定义。便于维护。
解决方案:(2)
你在DatabaseURL字符串中加入SelectMethod=Cursor;如下
jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=houwen;SelectMethod=Cursor;