Zero无法链接数据库
今天建了几个干净的XP虚拟机,在上面做了一下软件安装的测试。其中一个虚拟机当数据库服务器,上面装了SQL Server 2000和SQL Server 2005,另一个虚拟机安装的是一个干净的英文版XP,我给它起名叫Zero-XP,听起来挺NB的,既帅又酷,很像佐罗。
软件在Zero上运行十分的。。。不正常,安装完成后打开程序无法登录,直接蹦出个系统异常,连具体的错误信息都没有。郁闷的要死,因为我早就加了捕获异常的代码,没有道理直接死掉的。编程序时数据库、开发环境都是在本机上,所以运行的很正常,在Zero上运行程序链接的是另一个虚拟机的数据库,我以为是下面的几个原因:
1.连接字符串搞错
到connectionstrings网站上重新抄了下连接字符串,再次运行,还是同样的错误,并且同样的连接字符串在数据库服务器上运行就正常(其实从这里应该能推断出是Zero上访问不了数据库服务器,不过当时不愿承认这么残酷的现实)。
2.SQL2000与SQL2005混乱
因为数据库服务器上有两个Server,所以也有怀疑过通过IP或者机器名访问数据库会混乱,因为不知道访问的是哪个Server。但因为同样的链接字符串在数据库服务器上能正常运行,所以不是混乱的问题。2005的Server名字跟2000的名字是不一样的。
3.环境问题
因为我一直认为我加了捕获异常的代码,不应该直接报错,所以也有怀疑是环境问题。重新装了.net framework 2.0,水晶报表组件等,现象依然。决定排除环境问题。
4.两台虚拟机之间不通
这个很容易排除,因为我分别在两台虚拟机里ping对方,都是能ping通了。
5.数据库连不上
这个确认过了,数据库确实是连不上。打开Profiler跟踪数据库请求,没有跟踪到任何消息。所以我又在链接字符串那里动了动歪脑子,好一顿Google。
上面的都不是问题,那只能是程序问题了,又看了下代码,捕获异常部分我是这样做的:如果程序运行异常,则把异常信息记录到数据库的日志里。看到这里突然想,假如数据库都连不上,那处理异常的部分也会有异常。于是讲这部分有加了层异常处理,在这里有异常的话,就把异常打印出来。
于是又费了好大劲,在数据库服务器上重新编译了下程序,再到Zero上运行,这次报连接数据库超时的错误了,超时说明有什么东西在阻止Zero链接数据库,那一定是数据库服务器上的防火墙,于是把防火墙关掉,把卡巴斯基暂停5分钟,再次登录,这次终于正常了。
——问题解决,是防火墙的问题。
但一台数据库服务器,防火墙是不能不开的,否则就相当的不安全。于是又Google了一下,得知SQL Server使用的是1433端口,所以在防火墙的例外里面加上了不阻止1433端口的条目,启动防火墙,打开卡巴斯基,在Zero上运行软件,成了,呵呵。费了好几个小时才搞定。。。。






还没有任何评论。