当 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
。升级后,QTConsole
到 MS 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.5
和 3.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.8
和 Anaconda
您需要 Windows Command Prompt
读取和读取 + 执行权限。在 QTConsole
上 Anaconda Python 3.5
上 运行 你不需要这些权限(尽管你确实需要 Admin
权限才能安装)。
这不是 Anaconda
问题,事实上,如果没有 Anaconda
,我什至无法 运行 3.5
,因为唯一的其他方法 运行 Windows 中没有 Anaconda
环境的 Python 应用程序只是 运行 通过 Windows command prompt
,我不知道有权做。
我最近在 Windows 10
环境中从 3.5
->3.8
升级了我 运行 的 python
版本,两者都是 运行 在 Anaconda
环境中,特别是 QTConsole
。升级后,QTConsole
到 MS 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.5
和 3.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.8
和 Anaconda
您需要 Windows Command Prompt
读取和读取 + 执行权限。在 QTConsole
上 Anaconda Python 3.5
上 运行 你不需要这些权限(尽管你确实需要 Admin
权限才能安装)。
这不是 Anaconda
问题,事实上,如果没有 Anaconda
,我什至无法 运行 3.5
,因为唯一的其他方法 运行 Windows 中没有 Anaconda
环境的 Python 应用程序只是 运行 通过 Windows command prompt
,我不知道有权做。