簡體   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