一、问题背景
有一些小伙伴需要利用RPA去抓取数据,处理后存储到SQL server数据库中的,连接数据库过程中可能有一些报错,希望下面的解决方案能帮到大家。
二、报错信息与解决方案
前提:SQL server安装成功,并且可以用navicat或其他数据库管理工具连接。
1、报错信息:(20009, b'DB-Lib error message 20009, severity 9:\nUnable to connect: Adaptive Server is unavailable or does not exist (127.0.0.1)\nNet-Lib error during Unknown error (10061)\nDB-Lib error message 20009, severity 9:\nUnable to connect: Adaptive Server is unavailable or does not exist (127.0.0.1)\nNet-Lib error during Unknown error (10061)\n')
解决方法:计算机管理--服务与应用程序--SQL server配置管理器--SQL server网络配置--MSSQLSERVER的协议
tcp/ip状态切换为已启用

查看tcp动态端口,只有默认的1433端口,所以代码中可以用1433端口,或者直接不写,默认值就是1433。
如果有就记下来,例如61647,后面要用到。

重启SQL server
影刀编码版连接
import xbot
from xbot import print, sleep
from .import package
from .package import variables as glv
from pymssql import connect
def main(args):
#无动态端口
conn = connect(host="localhost", user="sa",password="123456", database="test", charset="UTF-8")
#有动态端口
conn = connect(host="localhost:61647", user="sa",password="123456", database="test", charset="UTF-8")
if conn:
print("链接成功")
pass
2、报错信息:(18456, b"\xe7\x94\xa8\xe6\x88\xb7 'sa' \xe7\x99\xbb\xe5\xbd\x95\xe5\xa4\xb1\xe8\xb4\xa5\xe3\x80\x82DB-Lib error message 20018, severity 14:\nGeneral SQL Server error: Check messages from the SQL Server\nDB-Lib error message 20002, severity 9:\nAdaptive Server connection failed (localhost)\nDB-Lib error message 20002, severity 9:\nAdaptive Server connection failed (localhost)\n")
解决方法:
1)确定账号、密码、数据库名是否写错
2)查看用户是否被禁用
打开SQL server management studio,先以windows身份登录

安全性--登录名--找到登录的身份--右击--属性--,切换为授权、启用


重启SQL sever,再次连接
3、报错信息:使用【连接数据库】指令,配置向导,测试连接成功,但是流程中报错,
(-2147352567, '发生意外。', (0, 'Microsoft OLE DB Driver for SQL Server', "用户 'sa' 登录失败。", None, 0, -2147217843), None)

解决方法:向导配置成功的字符串没有拼接密码,需要手动改一下,在用户名的后面加上password=密码;即可
原:Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=sqlserver;Data Source=DESKTOP-CIM
改:Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;password=123456;Initial Catalog=sqlserver;Data Source=DESKTOP-CIM
演示:
