当 Python Anaconda 环境中 运行 时,Pyodbc 在 2 小时后失去与 MS SQL 服务器的连接

Pyodbc loses connection after 2 hours to MS SQL Server when run in Python Anaconda environment

我最近在 Windows 10 环境中从 3.5->3.8 升级了我 运行 的 python 版本,两者都是 运行 在 Anaconda 环境中,特别是 QTConsole。升级后,QTConsoleMS SQL Server 的连接每隔 1-2 小时就会变得不稳定。之前在 3.5 上,我使用的是 pyodbc 3.0.10,它能够(并且仍然能够)保持与 MS SQL Server 的稳定连接。对于 3.8,我使用的是 pyodbc 4.0.30(我最初使用的是 4.0.0,但我升级了,超时时间从 1 小时延长到 2 小时)。我怀疑这可能是权限问题。

我应该注意,我从 Anaconda Navigator 启动 3.8 QTConsole,它只能使用 admin 凭据启动。 Windows profile 运行 宁 app 不能 运行 Navigator 甚至打开一个基本的 Command Prompt。我不需要 Navigator 或提升的凭据到 运行 3.5 QT Console,并且仍然可以 运行 3.5 并连接到 MS SQL Server 而无需任何困难。

当我尝试 运行 app 在同一个 QTConsole window 大约 2 小时后 app 会在尝试时间歇性地出现此错误连接到 SQL Server:

'28000', '[28000] [Microsoft][ODBC Driver 13 for SQL Server][SQL Server]Login failed. 
The login is from an untrusted domain and cannot be used with Windows authentication. 
(18452) (SQLDriverConnect); [28000] [Microsoft][ODBC Driver 13 for SQL Server][SQL Server]Login failed. 
The login is from an untrusted domain and cannot be used with Windows authentication. (18452)

我可以通过关闭当前的 QTConsole 并打开一个新的来重新建立连接,这将再次允许 app 连接 ≈ 2 小时,然后才能获得上述 error 再次。最终,大约 6 小时后,Navigator 似乎也失去了它的 admin 凭据,我无法再打开 QTConsoles 要求我关闭 Navigator并使用 admin 凭据重新打开。

这是我在 3.53.8 中用来连接的连接字符串:

conn = pyodbc.connect(server='server', database='SQL DB',
           Trusted_Connection='yes', driver='{ODBC Driver 13 for SQL Server}')

这是我得到 error.

的地方

不确定权限是否正在发挥作用,但可能是因为 app profile 无法执行 command prompt 阻止 Anaconda 运行 执行某些命令在 admin 凭据超时后保持数据库连接活动?

根据我所做的故障排除,我很确定问题是 运行 Python 3.8Anaconda 您需要 Windows Command Prompt 读取和读取 + 执行权限。在 QTConsoleAnaconda Python 3.5 上 运行 你不需要这些权限(尽管你确实需要 Admin 权限才能安装)。

这不是 Anaconda 问题,事实上,如果没有 Anaconda,我什至无法 运行 3.5,因为唯一的其他方法 运行 Windows 中没有 Anaconda 环境的 Python 应用程序只是 运行 通过 Windows command prompt,我不知道有权做。