前一天一朋友的SQL SERVER MSCS出现故障,一节点的SQL SERVER没办法Online,察看该节点OS的Event log,发现如下错误信息:
[sqsrvres] checkODBCConnectError: sqlstate = 01000; native error = 14; message = [Microsoft][ODBC SQL Server Driver][DBNETLIB]ConnectionOpen (PreLoginHandshake()).
[sqsrvres] ODBC sqldriverconnect failed
根据该错误信息,在google上查找,未果。打开MSCS管理工具,发现该节点上的其他Resource,如:Disk,IP Address,Network Name都是Online的,但就是跟sql有关的resource offline…初步估计是该节点的sql server有问题,试着将其切换至另一节点,发现可以online…这样似乎证实了刚才的判断…
既然是该节点的sql server有问题,那干脆将该节点的sql server程序文件重新安装一下,步骤如下:
1.将两边的Cluster service,sql server service停掉
2.为预防万一,将该节点的sql server文件夹改名备份
3.copy另一节点之sql server文件夹至本节点对应目录
4.将两边的cluster service 启动
结果更糟,两边的sql server service都无法起来了!
赶紧察看OS Event log,发现了新的error,如下:
[sqsrvres] checkODBCConnectError: sqlstate = 08001; native error = 14; message = [Microsoft][ODBC SQL Server Driver][DBNETLIB]Encryption not supported on SQL Server
重点在Encryption not supported on SQL Server, 奇怪怎么会出现sql server上不支持加密的错误呢?然后看了一下是DBNETLIB产生的错误,这不就是TCP/IP协议客户端通信组件所使用的文件吗?赶紧在命令行下执行:cliconfg,画面如下:
看图上用红线圈起来的地方,果然发现有强制进行协议加密!将强制加密去掉,果然sql service起来了!再检查另一节点,也是同样的问题,这样问题得到了解决!
其实在检查的过程中发现在OS的Service里sql server的服务是运行的,那就说明sql server本身没问题,只是没办法用管理工具去管理而已,因为所有的管理工具都是要通过通信组件客户端去连接,所以该问题最后的诊断结果是通信组件客户端采用了TCP/IP协议,但SQL SERVER不支持在该协议上加密,所以导致通信失败!
No Comments
Be the first to comment on this entry.
Leave a comment
Fields in bold are required. Email addresses are never published or distributed.
Some HTML code is allowed:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>URLs must be fully qualified (eg: http://www.dbifan.com),and all tags must be properly closed.
Line breaks and paragraphs are automatically converted.
Please keep comments relevant. Off-topic, offensive or inappropriate comments may be edited or removed.