这个问题真是快要找遍全网了,困扰许久,搜出来很多遇到同样问题的,但给出的方法都不完整,最后真是费劲周折。好了说正事:
用pymssql链接sql server express 死活连接不上,报告错误:
b'DB-Lib error message 20009, severity 9:\nUnable to connect: Adaptive Server is unavailable or does not exist\nNet-Lib error during Unknown error (10035)
1.sql server managerment studio是正常连接的; pymssql连接远程的sql server 2014 标准版也是正常的。
2.pymssql的github上有几个关于此的issue都被不由分说的关闭了,似乎是个不言而喻的使用问题。然而一番搜索,没有太多头绪。后来在stack over flow找到一个帖子: pymssql.OperationalError: DB-Lib error message 20009, severity 9 ,按帖子的说法,在sql server的配置管理中,启用tcp/ip协议,并给127.0.0.1指定1433端口即可。
这里又出现个问题是,在开始菜单中没有找到sql server的配置管理,搜索后发现在‘C:\Windows\SysWOW64’找到SQLServerManager10.msc
接着按照上面的方法,试了还是不起作用。 最终在这篇文章中找到答案: How to: Configure Express to accept remote connections 原来除了启用tcp/ip协议,还需启动SQL Browser Service
注意:启用TCP/IP协议时,不能只看到这个状态是否启用,要双击进到里面的子标签“IP地址”,修改里面ip为127.0.0.1的启用状态和最后一个IPALL的TCP端口号修改为1433
**
**
3.1 打开“SQL Server Configuration Manager”,找不到的话,可在计算机管理 -> 服务和应用程序中找到.
3.2 在SQL Server Network Configuration -> Protocols for SQLEXPRESS中启用TCP/IP协议, TCP/IP -> Properties -> IP Addresses 修改里面ip为127.0.0.1的启用状态。
3.3 TCP/IP -> Properties -> IP Addresses,在TCP/IP节点上打开属性窗口,在IPALL条目中,清除TCP Dynamic Ports的值,在TCP Port中填写1433,sql server默认的端口号是1433。
3.4 重要 ,启动SQL Browser Service。sql server express默认是禁止该服务,改为”自动“,并启动它。