繁体   English   中英

使用Python连接到具有Active Directory通用身份验证的SQL Server DB

[英]Connect to SQL Server DB with Active Directory Universal Authentication using Python

首先,我不是开发人员,因此对于这是一个多余或无益的问题,我深表歉意。

在Microsoft SQL Server Management Studio中,我可以使用Active Directory通用身份验证连接到特定的服务器,但是我无法找到使用Python进行此操作的方法。

使用该应用程序登录时,单击“连接”后,将弹出一个Azure登录屏幕,并且可以使用我的用户名:myname@domain.com和密码登录。

但是,当我尝试通过以下代码使用pyodbc连接时,出现以下错误:

import pyodbc

def main():
    serverName = "name.database.windows.net"
    dbName = "DatabaseName"

    connection = pyodbc.connect("DRIVER={SQL Server};SERVER=" + serverName + 
                 ";DATABASE=" + dbName + 
                 ";UID=myname@domain.com;PWD=mypassword")
    cursor = connection.cursor()
    data = cursor.execute("select * from sometable;")
    allData = data.fetchall()
    connection.close()
    for i in allData:
        print(i)

if __name__== "__main__":
    main()

pyodbc.ProgrammingError :(“ 42000”,“ [42000] [Microsoft] [ODBC SQL Server驱动程序] [SQL Server]无法打开登录名请求的服务器“域”。IP地址为“ xx.xx.xx.xx”的客户端不允许访问服务器要启用访问,请使用Windows Azure管理门户或在主数据库上运行sp_set_firewall_rule来为此IP地址或地址范围创建防火墙规则,此更改最多可能需要五分钟的时间。 (40615)(SQLDriverConnect); [42000] [Microsoft] [ODBC SQL Server驱动程序] [SQL Server]

我知道有类似问题的帖子,但是我不确定这是同一个问题。 我必须为此服务器使用Active Directory通用身份验证。 我已经尝试了从pyodbc.drivers()返回的所有SQL Server驱动程序,但是没有运气。 我使用与通过Python程序尝试登录时使用的IP地址相同的IP地址通过SQL Server Management Studio登录。 我可以使用其他模块登录Azure,还是不能这样做?

作为参考,下面是我通过Microsoft SQL Server Management Studio登录时看到的弹出窗口。 我已经坚持了一段时间,因此我们将不胜感激。 在此处输入图片说明

在此处输入图片说明

如果尚未设置Azure SQL防火墙,则会收到相同的错误消息: 在此处输入图片说明

我们可以通过azure门户设置SQL Server防火墙 ,如下所示: 在此处输入图片说明

添加防火墙设置后,可以使用您的python脚本进行查询,python脚本对我有用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM