pymssql windows身份验证

Inb*_*ose 13 python windows-authentication pymssql

pymssql模块用于支持Windows身份验证.现在看来它没有.虽然在某些地方它仍然表明它应该工作.我一直无法找到这个问题的明确答案,也无法找到解决方案.最相关的链接:

https://groups.google.com/forum/#!topic/pymssql/QDMLTGBNeU0

pymssql 1.0支持它,因为它使用并依赖于MS提供的DLL,它是SQL Server客户端堆栈的一部分.该堆栈负责处理所有NTLM协商等.这意味着它是一个仅限Windows的解决方案.

我可以模拟许多种网络环境,所以我尝试了很多不同的设置.我试图能够使用此脚本使用Windows身份验证连接到远程MSSQL服务器.这就是问题所在.


根据我的研究,包括上面的链接,也有使用Windows身份验证与被该pymssql模块两种方式应该工作.

第一种方法:使用当前用户凭据:

pymssql.connect(server='server') 
# credentials come from active windows session
# some research shows that a "trusted=True" keyword should be provided.
Run Code Online (Sandbox Code Playgroud)

第二种方法:使用给定的用户凭据:

pymssql.connect(server='server', user=r'domain\user', password='pass') 
# credentials are given in code and somehow converted to a 
# windows authentication in the background
# some research shows that a "trusted=True" keyword should be provided.
Run Code Online (Sandbox Code Playgroud)

使用该_mssql模块也是如此.


笔记:

  • Python版本:2.7.8
  • 我正在使用的pymssql版本:2.1.1
  • 用于支持Windows身份验证的pymssql版本:1.x
  • 我测试过(全64位):
    • Windows 7专业
    • Windows 7家庭高级版
    • Windows Server 2012
    • Windows服务器2012R2

关于该主题的其他问题:

pymssql:如何在非Windows框上运行时使用Windows身份验证

无法使用pymssql与Windows身份验证进行连接

/sf/ask/1938465651/

小智 7

我能够使用python 2.7.11 64位,pymssql 2.1.1 win 64,windows 10,sqlserver 2012和Windows身份验证来解决这个问题:

conn = pymssql.connect(server = 'EDDESKTOP', database = 'baseballData')
Run Code Online (Sandbox Code Playgroud)

并启用Sql Server配置管理器中的tcp/ip连接> Sql Server网络配置 - > MSSQLSERVER的协议 - >启用TCP/IP


Inb*_*ose 1

所以,我想我应该用我最终用来解决这个问题的方法来回答我自己的问题(已经几个月了)。

简短的回答:我用了别的东西。

更长的答案:为了测试 Windows 身份验证(除了当前登录的 Windows 用户,它确实有效),我开始使用SQLCMDMicrosoft 的工具,并结合PsExec.

elevated 我使用(-h)load profile (-e)标志执行 PsExec 。使用完整的用户名DOMAIN\USERNAME

trusted connection 我使用-E标志执行 SQLCMD 。

剩下的就取决于你了。