我最近从3.5->3.8升级了我在Windows 10环境中运行的python版本,这两个版本都可以在Anaconda环境中运行,特别是在QTConsole中。升级后,与MS SQL Server的QTConsole连接每隔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凭据启动。运行app的Windows profile不能运行Navigator,甚至不能打开基本的Command Prompt。我不需要Navigator或提升的凭据来运行3.5 QT Console,仍然可以运行3.5并毫无困难地连接到MS SQL Server。
大约2小时后,当我尝试在同一个QTConsole窗口中运行app时,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并打开一个新的error来重新建立连接,这将再次允许app在再次获得上述error之前连接≈2小时。最后,大约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无法执行阻止Anaconda在admin凭据超时后运行某些命令来保持数据库连接活动的command prompt?
发布于 2020-12-07 02:48:12
根据我所做的故障排除,我非常确定问题在于,要在Anaconda上运行Python 3.8,您需要Windows Command Prompt Read & Read + Execute权限。要在QTConsole中的Anaconda Python 3.5上运行,您不需要这些权限(尽管您显然需要Admin权限才能安装)。
这不是Anaconda的问题,事实上,如果没有Anaconda,我甚至无法在3.5中运行,因为在没有我所知的Anaconda环境的情况下,在Windows中运行Python应用程序的唯一另一种方法是通过Windows command prompt运行,而我没有权限这样做。
https://stackoverflow.com/questions/65147870
复制相似问题