Environment:

Docker image :python:2.7.14-stretch(这意味着Debian 9作为底层操作系统)
Debian 9的安装SQL Server ODBC驱动程序(https://docs.microsoft.com/en-us/sql/connect/odbc/linux-mac/installing-the-microsoft-odbc-driver-for-sql-server?view=sql-server-2017

使用pyodbc模块

使用AAD身份验证连接到Azure SQL Server .

Issue:

与DB的第一次连接完全正常 . 但是,与同一个DB或其他DB的任何下一个连接都会失败并出现以下错误:

例外:::('08001',你'[08001] [unixODBC] [微软] [用于SQL Server的ODBC驱动程序17] SSL提供程序:[错误:140A90F1:lib(20):func(169):reason(241 )]( - 1)(SQLDriverConnect)')无法连接到DB

请注意,仅在使用AAD自动更新模式时才会出现此问题 . 如果我使用简单的sql server用户,一切运行正常 .

以下是示例代码段 .

db_list = [TEST_DB1, TEST_DB2]
sql_conn = None
for db in db_list:
    try:
        conn_string = 'DRIVER={ODBC Driver 17 for SQL Server};' \
                      'SERVER=' + <db_url> + \
                      ';DATABASE=' + <db_name> + \
                      ';UID=' + <db_username> + \
                      ';PWD=' + <db_password> + \
                      ';Authentication=ActiveDirectoryPassword'
        print conn_string
        sql_conn = pyodbc.connect(conn_string)
except Exception as e:
    print "Exception:::", e
    print 'Cannot connect to DB' + str(sys.exc_info()[0])
    return None
sql_conn.cursor().execute(<some SQL Query>)
sql_conn.close()