最近帮朋友做一个数据库表转移的程序。是sqlserver2000的。在我电脑的虚拟机上装了一个。(我本机的操作系统是win7,装不上,就见了个虚拟机装了个xp,然后在xp里装了sqlserver2000)。
然后我在本机(win7)上通过navcat 连接sqlserver2000。呃,连接不上啊!折腾了一下午,解决了。这里记录一下。
首先,找原因:
先查看两个系统间的网络连接是否是通的:ping xxx。结果是不同。于是到xp上,关了防火墙,再次ping。通了。
再看xp上是否启用了sqlserver的服务,结果启动。。但是通过netstat -ano查看端口1433(sqlserver2000默认端口)是否启动,却没有查到。看来问题就在这了,为什么服务启动了,端口去没有打开呢?
查资料得知:
查询sqlserver的版本。打开查询分析器,输入sql语句:select @@version。得到版本号如下:Microsoft SQL Server 2000 - 8.00.194 (Intel X86) 。显然,我这里的原因是(1)。
下载补丁,去微软下载中心:http://www.microsoft.com/zh-cn/download/details.aspx?id=18290。文件列表如下:
可以看到,有3个文件。我本地有SQL2000.AS-KB884525-SP4-X86-CHS.EXE。所以就先安装这个,结果不行,提示要先安装Analysis Service。这东西在哪?我还想着再去网上下载一个,结果发现安装程序的第二项就是:
装了,再装SQL2000.AS-KB884525-SP4-X86-CHS.EXE。OK,没问题。
然后装SQL2000.-KB884525-SP4-X86-CHS.EXE。这个很顺利。
最后装SQL2000.MSDE-KB884525-SP4-X86-CHS.EXE。结果上来就报错:指定的实例名无效。百度,解决挺麻烦。我就想,这个MSDE是什么,再百度,百科里这么介绍“MSDE全称是MS SQL Server Desktop Engine,俗称MSSQL的桌面版,它是一个基于 SQL Server 核心技术构建的数据引擎。”擦,也就是说MSDE也是个数据库,我装了SQLServer2000了,又没装MSDE2000,这个补丁还打个毛啊。果断放弃。重新netstat -ano了一下,发现1433已经启动。用navcat连接,成功。
PS:铁通的破网,我的时间都浪费在你上边了。