我正在嘗試使用 pyodbc 使用為此目的創建的 AD 服務帳戶連接到本地/物理 SQL 服務器實體。
我將連接字串構建為:
import pyodbc
server = 'FULLY_QUALIFIED_SERVER_NAME.xx.xxx.xxx,1433'
database = 'TargetDB'
username = 'DOMAIN\USERNAME'
password = 'PASSWORD'
cnxn = 'DRIVER={ODBC Driver 17 for SQL Server};SERVER=' server ';UID=' username ';PWD=' password ';Authentication=ActiveDirectoryPassword;'
print(cnxn)
pyodbc.connect(cnxn)
當我從 cmd 行運行時:
PS C:\Conn_Sql\DA_CONNECT_SQL_TEST> python __init__.py
DRIVER={ODBC Driver 17 for SQL Server};SERVER=FULLY_QUALIFIED_SERVER_NAME.xx.xxx.xxx,1433;UID=DOMAIN\USERNAME;PWD=PASSWORD;Authentication=ActiveDirectoryPassword;
Traceback (most recent call last):
File "__init__.py", line 12, in <module>
pyodbc.connect(cnxn)
pyodbc.InterfaceError: ('28000', "[28000] [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]Login failed for user ''. (18456) (SQLDriverConnect); [28000] [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]Login failed for user ''. (18456)")
PS C:\Conn_Sql\DA_CONNECT_SQL_TEST>
如果不想滾動,則錯誤為:[SQL Server]用戶''登錄失敗
我已經在內部接觸了所有我能找到的資源,但似乎沒有人能夠指出我的答案。
注意:當我嘗試以類似方式登錄 SQL 服務器時,出現同樣的錯誤。

我能夠使用此帳戶進行連接的唯一方法是使用 SSMS 登錄服務器,作為服務帳戶啟動。
我希望這是簡單的事情。
uj5u.com熱心網友回復:
ODBC 驅動程式不支持使用您提供的憑據進行 Windows 身份驗證(NTLM 或 Kerberos)。你必須要么
作為目標帳戶運行該行程或執行帳戶的 Windows 模擬,例如使用
runas或將您的代碼安裝為目標服務帳戶的 Windows 服務。在 Windows 憑據存盤中為運行應用程式的用戶安裝 Windows 憑據。
運行應用程式
runas /netonly以使用提供的憑據進行 NTLM 身份驗證。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/350608.html
