【问题标题】:Python ODBC Connect to SQL Server with Service Account (trusted_connection=no)Python ODBC 使用服务帐户连接到 SQL Server (trusted_connection=no)
【发布时间】:2020-09-30 20:55:26
【问题描述】:

只要我使用受信任的连接,我就可以使用 SQL Alchemy 或 Pyodbc 连接到我的服务器:

pyodbc.connect("Driver={SQL Server};Server=myServer;Port=1433;Database=myDB;trusted_connection=yes")

sqlalchemy.create_engine('mssql://myServer/myDB?trusted_connection=yes&driver=SQL+Server')

但我需要使用基本 Windows 身份验证连接到服务帐户。当我尝试像这样添加 UID/PWD 时:

sqlalchemy.create_engine("mssql+pyodbc://myUserName:myPassWord@myServer?driver=SQL+Server?trusted_connection=no")

pyodbc.connect('DRIVER={SQL Server};SERVER=myServre;DATABASE=myDB;UID=myUserName;PWD=myPassword')

我收到错误“用户 'myUserName' 登录失败。(18456) (SQLDriverConnect); [28000]”

奖励尝试:

sqlalchemy.create_engine("mssql+pyodbc://myUserName:myPassword@myDB?driver=SQL+Server?trusted_connection=no")

返回 '[Microsoft][ODBC Driver Manager] 数据源名称太长 (0) (SQLDriverConnect)'

使用 SQL Server 2018。

我已验证服务帐户在我尝试连接的数据库上拥有所有正确的权限。 FWIW,我也尝试使用我自己的 Windows 凭据而不是服务帐户的凭据(但使用trusted_connection=no)进行连接,我收到了相同的错误消息。

【问题讨论】:

  • 没有 SQL Server 2018 版本 - 我们有 2012、2014、2016、2017 和 2019 - 任君选择

标签: python sql-server windows authentication odbc


【解决方案1】:

收到错误“用户 'myUserName' 登录失败。(18456) (SQLDriverConnect); [28000]”

Microsoft ODBC 驱动程序都不支持使用提供的凭据使用 Windows 集成身份验证(NTLM 或 Kerberos)。这个连接字符串

DRIVER={SQL Server};SERVER=myServre;DATABASE=myDB;UID=myUserName;PWD=myPassword

适用于 SQL Auth,您在 SQL Server 中创建了登录名和数据库用户。

例如:

use mydb
create login myUserName with password='myPassword'
create user myUserName for login myUserName
grant select to myUserName

要将 Windows Auth 与此驱动程序一起使用,您必须以目标用户身份运行程序、执行 Windows 级模拟、在 Windows 凭据存储中存储凭据或使用 runas /netonly

【讨论】:

  • 这解释了我的连接问题...谢谢!那么问题来了,如何使用服务帐户通过 Windows 任务计划程序运行这个 python 脚本?我以最高权限运行,但据我所知,我不能使用 runas /netonly。
  • 您可以将任务配置为以您想要的任何用户身份运行。它位于“常规”选项卡下的“安全选项”中。
  • 是的。谢谢。为了将来参考,这是我必须做的让服务帐户工作:打开“本地安全策略”并将其添加到“本地策略>用户权限分配”作为服务登录并作为批处理作业登录。 social.technet.microsoft.com/Forums/Azure/en-US/…
猜你喜欢
  • 2018-12-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多