我试图使用Python通过窗口身份验证连接到SQL数据库。我看了这里的一些帖子(例如here),但是建议的方法似乎不起作用。
例如,我使用了以下代码:
cnxn = pyodbc.connect(driver='{SQL Server Native Client 11.0}',
server='SERVERNAME',
database='DATABASENAME',
trusted_connection='yes')
但我犯了以下错误:
Error: ('28000', "[28000] [Microsoft][SQL Server Native Client 11.0][SQL Server]
Login failed for user 'DOMAIN\\username'. (18456) (SQLDriverConnect); [28000] [Microsoft]
[SQL Server Native Client 11.0][SQL Server]Login failed for user 'DOMAIN\\username'.
(18456)")
(注意,在上面的错误消息中,我将实际的域名和用户名分别替换为DOMAIN
和username
。)
我还尝试使用我的UID
和PWD
,这导致了相同的错误。
最后,我试图按照上面链接的建议更改服务帐户,但是在我的计算机上,当我转到services.msc
的Properties
时,没有Log On
选项卡。
我想知道我做错了什么,怎样才能解决这个问题。
我什么都试过了,这就是我最终的成功:
从Windows计算机连接:
使用Microsoft针对SQL Server的ODBC驱动程序,
Trusted_connection=yes
告诉驱动程序使用“Windows身份验证”,脚本将尝试使用运行脚本的用户的Windows凭据登录到SQL Server。UID
和PWD
不能用于在连接字符串中提供其他Windows凭据,因此如果需要以其他Windows用户身份连接,则需要使用RUNAS
以该其他用户身份运行Python脚本。。如果要对由
UID
和PWD
指定的SQL Server登录名使用“SQL Server身份验证”,请使用Trusted_connection=no
。从非Windows计算机连接:
如果需要从非Windows计算机连接,并且SQL Server配置为仅使用“Windows身份验证”,则Microsoft的SQL Server ODBC驱动程序将要求您使用Kerberos。或者,可以使用FreeTDS ODBC,在连接字符串中指定
UID
、PWD
和DOMAIN
,前提是SQL Server实例配置为支持旧的NTLM身份验证协议。尝试此cxn字符串:
http://mkleehammer.github.io/pyodbc/
相关问题 更多 >
编程相关推荐