【问题标题】:Operational Error connecting to SQL Server through Python3.7通过 Python3.7 连接到 SQL Server 的操作错误
【发布时间】:2020-08-13 07:01:21
【问题描述】:

我使用的是 Python 3.7,几年来我有一个 Python 脚本,它使用以下代码连接到 SQL 服务器:

con_string = 'DRIVER={SQL Server};SERVER='+ server +';DATABASE=' + database
cnxn = pyodbc.connect(con_string)
cursor = cnxn.cursor()

最近在运行脚本时出现以下错误:

OperationalError: ('08001', '[08001] [Microsoft][ODBC SQL Server Driver][TCP/IP Sockets]SSL Security error (18) (SQLDriverConnect); [08001] [Microsoft][ODBC SQL Server Driver][TCP/IP Sockets]ConnectionOpen (SECCreateCredentials()). (1)')

我不太清楚如何解释这一点,并尝试寻找解决方案,但无法理解其中的大部分内容?

谢谢

2020 年 8 月 18 日更新

在 Gords 的帮助下,我更新了我的驱动程序并根据以下答案构建了一个新的连接字符串:

Pyodbc error Data source name not found and no default driver specified paradox

con_string = 'DRIVER={ODBC Driver 17 for SQL Server};TrustServerCertificate=No;Network=DBMSSOCN;DATABASE='+database+';WSID=L13-CHRISTOPHER;APP={Microsoft® Windows® Operating System};Trusted_Connection=Yes;SERVER='+server+';'

但我仍然收到错误

OperationalError: ('08001', '[08001] [Microsoft][ODBC SQL Server Driver][TCP/IP Sockets]SSL Security error (18) (SQLDriverConnect); [08001] [Microsoft][ODBC SQL Server Driver][TCP/IP Sockets]ConnectionOpen (SECCreateCredentials()). (1)')

谢谢

【问题讨论】:

  • “SQL Server”驱动程序很旧。尝试使用更现代的驱动程序,例如“ODB​​C Driver 17 for SQL Server”。
  • 感谢 Gord,我将“SQL Server”替换为“ODBC Driver 17”并收到新的错误消息 InterfaceError: ('IM002', '[IM002] [Microsoft][ODBC Driver Manager] Data source未找到名称且未指定默认驱动程序 (0) (SQLDriverConnect)')
  • 需要安装驱动才能使用。查看pyodbc.drivers() 返回的列表,了解您的 Python 应用当前可用的驱动程序。
  • 再次感谢戈德。我更新了驱动,还是不行。所以我找到了下面的链接并使用该方法重建了我的连接字符串:stackoverflow.com/questions/32662123/… 但是在构建时用于测试的新连接字符串再次给了我操作错误
  • 原始问题编辑中的新连接字符串。

标签: python-3.x odbc pyodbc


【解决方案1】:

方法一:- 看看这个:

con_string = pyodbc.connect(driver='{SQL Server}', host=server, database=db1, trusted_connection=tcon) 光标 = cnxn.cursor()

如果 Method-1 不适合您,那么您的 SQL Server 驱动程序可能需要 TLS 1.0,这将在您的计算机上被禁用。更改为最新版本的 SNAC 将为您解决问题

con_string = pyodbc.connect(driver='{SQL Server Native Client 11.0}', host=server, database=db1, trusted_connection=tcon)

【讨论】:

  • 感谢您的回答 Ansh,tcon 是什么?我找不到它是在哪里定义的。
  • 受信任的连接意味着 Windows 身份验证。 SQL Server 有两种身份验证模式:混合身份验证模式和 Windows 身份验证模式。
  • 你可以省略它,它是可选的。
  • 如果它对您有用,那么请为答案投票。谢谢!!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-29
  • 2010-10-14
  • 2021-09-02
  • 2012-12-04
  • 1970-01-01
相关资源
最近更新 更多