需要帮助通过pyodbc使用服务帐户修复sql连接问题



当我尝试运行以下代码时,出现以下错误。尝试引用其他帖子,但似乎没有帮助。

服务器主体"{Myuser}"在当前安全上下文下无法访问数据库"{数据库}"。(916) (SQLExecDirectW)'

import pyodbc 
cnxn = pyodbc.connect("Driver={SQL Server};"
                      'Server=XXXXXXX;'
                      'Port=xxxx'
                      'Username={service_account}'
                      'Password={password of service_account}'
                      'Database={detabase};'
                      'Trusted_Connection=yes;')
results = cnxn.cursor()
results.execute('SELECT * FROM {database}.dbo.{tablename}')
for row in results:
    print(row)

如果要将Microsoft的 ODBC 驱动程序用于 SQL Server 和 Trusted_Connection=yes(SQL Server Windows 身份验证),则不会在连接字符串中传递 Windows 凭据。相反,您以 Windows 用户身份运行 Python 应用。做到这一点的方法包括

  • 使用 RUNAS 命令从 Windows 命令提示符启动 Python 应用,或者
  • right_clicking应用图标移开,然后选择"以其他用户身份运行"。

另一种选择可能是使用 FreeTDS ODBC 驱动程序。它支持较旧的 NTLM 身份验证协议,并允许您在连接字符串中指定域、UID 和 PWD(用于 Windows 身份验证)。

这对我有用:

import pyodbc 
password = "<password>"
conn = pyodbc.connect("Driver={SQL Server};Server=<host>;Port=<port>;UID= 
<username>;PWD=" + password + ";Database=<dbname>;")
cursor = conn.cursor()
cursor.execute('SELECT * FROM <table>')
for row in cursor:
    print(row)

相关内容

  • 没有找到相关文章

最新更新