windows-authentication - python pymssql Windows 身份验证

用于支持Windows身份验证的pymssql模块。

此堆栈负责处理所有NTLM协商,这意味着,除此之外,它是仅限windows的解决方案。

我试图使用此脚本通过Windows身份验证连接到远程MSSQL服务器。

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


pymssql.connect(server='server') 


# credentials come from active windows session


# some research shows that a"trusted=True" keyword should be provided.



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


pymssql.connect(server='server', user=r'domainuser', 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.



使用_mssql模块也是如此。

注释:

  • python版本:2.7.8
  • 我使用的pymssql版本:
  • 用于支持pymssql认证的Windows版本:1.x
  • 我用(所有64位)测试过:
    • Windows 7专业版
    • windows 7家庭高级版
    • Windows Server 2012
    • Windows Server 2012R2

时间:

我在python 2.7.11 64位,pymssql 2.1.1 win 64,Windows 10,sqlserver 2012和Windows身份验证解决了此问题,方法是:


conn = pymssql.connect(server = 'EDDESKTOP', database = 'baseballData')



并在Sql Server配置管理器

我能够连接的唯一方法是使用IronPython,并且导入clr模块。下面是我连接到服务器的代码。


import clr


clr.AddReference('System.Data')


from System.Data.SqlClient import *



Conn_string = 'data source=Server_Name; initial catalog=Database_Name; trusted_connection=True'


ScheduleConn = SqlConnection(Conn_string)


ScheduleConn.Open()



在RHEL上,设置FREETDSCONF环境变量,默认情况下,Pymssql在错误的位置查找:


os.environ["FREETDSCONF"] ="/etc/freetds.conf"



Python 3.6,Windows 10,可以工作了。


conn = pymssql.connect(server='(local)', database='DbName')



更长的答案:对于Windows认证,我开始使用来自Microsoft的SQLCMD工具,与PsExec。

使用(-H )和load profile标志执行的PsExec ,使用完整的用户名DOMAINUSERNAME

使用trusted connection -E标志执行的sql cmd。

...