2017-09-14 147 views
0

首先,我不是開發人員,因此如果這是多餘或無用的問題,我表示歉意。使用Python連接到使用Active Directory通用身份驗證的SQL Server數據庫

在Microsoft SQL Server Management Studio中,我能夠連接到使用Active Directory通用認證某個服務器,但我不能想出一個辦法做到這一點使用Python。

當我與應用程序登錄,我點擊連接後,一個藍色的登錄屏幕上彈出,而我能夠用我的用戶名登錄:[email protected]和密碼。

然而,當我嘗試使用pyodbc用下面的代碼連接時,我得到的錯誤如下:

import pyodbc 

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

    connection = pyodbc.connect("DRIVER={SQL Server};SERVER=" + serverName + 
       ";DATABASE=" + dbName + 
       ";[email protected];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 Driver][SQL Server]Cannot open server 'domain' requested by the login. Client with IP address 'xx.xx.xx.xx' is not allowed to access the server. To enable access, use the Windows Azure Management Portal or run sp_set_firewall_rule on the master database to create a firewall rule for this IP address or address range. It may take up to five minutes for this change to take effect. (40615) (SQLDriverConnect); [42000] [Microsoft][ODBC SQL Server Driver][SQL Server]

我知道已經有關於類似問題的帖子,但我不知道這是同樣的問題。我必須爲此服務器使用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

我得到同樣的錯誤消息,如果我有一套Azure的SQL防火牆: enter image description here

我們可以通過天藍色門戶網站設置SQL服務器的防火牆,就像這樣: enter image description here

當我添加防火牆設置後,我可以使用你的pyt hon腳本來查詢,python腳本適用於我。

+0

我無法理解爲什麼我需要使用不同的IP地址使用Python比我在使用SQL Server Management Studio中登錄的一個登錄。這是一個配置問題?我目前沒有管理員權限來更改防火牆設置。 – user5932842

+0

你的python和ssms在同一臺機器上運行嗎? –

+0

我使用同一臺計算機運行它們 - 當我使用這種身份驗證方法時,SSMS是否可以切換到運行虛擬機上的登錄進程,或者是否有可能發生多因素身份驗證的奇怪事情(有時我必須輸入我的密碼兩次在SSMS中的兩個不同的彈出窗口)? – user5932842

相關問題