使用Python

时间:2017-09-14 01:49:13

标签: python sql-server azure authentication

首先,我不是开发人员,所以如果这是一个多余或无益的问题我会道歉。

在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   服务器驱动程序] [SQL Server]无法打开请求的服务器“域”   登录。 IP地址为“xx.xx.xx.xx”的客户端不允许访问   服务器。要启用访问权限,请使用Windows Azure管理门户   或者在master数据库上运行sp_set_firewall_rule来创建   此IP地址或地址范围的防火墙规则。它可能需要   五分钟让这个改变生效。 (40615)   (的SQLDriverConnect); [42000] [Microsoft] [ODBC SQL Server驱动程序] [SQL   服务器

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

作为参考,我在下面通过Microsoft SQL Server Management Studio登录时看到的弹出窗口。我已经坚持了一段时间,所以任何帮助都非常感激。 enter image description here

enter image description here

1 个答案:

答案 0 :(得分:1)

如果我设置Azure SQL防火墙,我会收到相同的错误消息: enter image description here

我们可以通过azure portal设置 SQL server防火墙,如下所示: enter image description here

添加防火墙设置后,我可以使用你的python脚本进行查询,python脚本适用于我。