Connecting On-Prem Django App with Microsoft Fabric DWH fails: Invalid connection string attribute

FREDFREDFRED 0 Zuverlässigkeitspunkte
2024-10-17T17:50:03.7766667+00:00

I'm trying to connect my Django app to Microsoft Fabric warehouse but I get the following error messages:

django.db.utils.Error: ('01S00', '[01S00] [Microsoft][ODBC Driver 17 for SQL Server]Invalid connection string attribute (0) (SQLDriverConnect); [01S00] [Microsoft][ODBC Driver 17 for SQL Server]Invalid connection string attribute (0)')

I tried various combinations to build the connection string in the settings.py. My first attempt was:

    'FabricDW': {
        'ENGINE': 'mssql',
        'NAME': CONFIG["WAREHOUSE_DB_NAME"],
        'USER': CONFIG["AZURE_CLIENT_ID"],  # Azure AD user
        'PASSWORD': CONFIG["AZURE_CLIENT_SECRET"],  # Azure AD password
        'HOST': CONFIG["WAREHOUSE_HOST"],  # Server hostname
        'PORT': '1433',
        'OPTIONS': {
            'driver': 'ODBC Driver 17 for SQL Server',
            'extra_params': 'Authentication=ActiveDirectoryServicePrincipal',
            'host_is_server': True,
        },
    }

I looked for solutions and tried various different approaches (such as trying to use different authentication methods) or using DSN (connection itself is working fine). Nothing helps.

When I use connection strings like this in usual python scripts everything works like a charm:

server_name = CONFIG["WAREHOUSE_DB_NAME"]
database_name = CONFIG["WAREHOUSE_DB_NAME"]
client_secret = CONFIG["AZURE_CLIENT_SECRET"]
tenant_id = CONFIG["AZURE_TENANT_ID"]
client_id = CONFIG["AZURE_CLIENT_ID"]
connection_string = f'Driver={{ODBC Driver 17 for SQL Server}};' \
                    f'Server={server_name};Database={database_name};' \
                    f'UID={client_id}@{tenant_id};PWD={client_secret};' \
                    'Authentication=ActiveDirectoryServicePrincipal'
params = urllib.parse.quote_plus(connection_string)
engine = create_engine(f'mssql+pyodbc:///?odbc_connect={params}')

I don't know if there is some parsing complications that I overlook. Help would be great.

SQL Server
SQL Server
Eine Familie von Verwaltungs- und Analysesystemen für relationale Datenbanken von Microsoft für E-Commerce-, Branchen- und Data Warehousing-Lösungen.
15 Fragen
Active Directory
Active Directory
Eine Reihe verzeichnisbasierter Technologien, die in Windows Server enthalten sind
25 Fragen
0 Kommentare Keine Kommentare
{count} Stimmen

1 Antwort

Sortieren nach: Am hilfreichsten
  1. Dimitar Denkov 1,660 Zuverlässigkeitspunkte Microsoft-Anbieter
    2024-10-18T20:03:24.3533333+00:00

    Hallo,

    (For recapitulation in English see end of this message.)

    Da Du die Frage in den deutschsprachigen Q&Α-Foren gestellt hast, antworte ich auf Deutsch. Du hast das Tag Active Directory hinzugefügt, aber die Codeausschnitte deuten auf Azure Active Directory hin. Wenn der Benutzer doch gegen Active Directory authentifiziert wird, so muss Kerberos eingerichtet worden sein, damit die richtigen Active Directory-Anmeldeinformationen erhalten werden. Mehr darüber findest Du in diesem Thread:

    https://stackoverflow.com/questions/70991127/django-connect-sql-server-using-active-directory-user

    Wenn nur Azure Active Directory (Microsoft Entra ID) verwickelt ist, gib bitte Bescheid, damit ich das überflüssige Tag entfernen kann.

    If you prefer English-language support, you may repost your question there with one or both of the appropriate tags (there are tags for Azure App Service and Microsoft Entra ID):

    https://learn.microsoft.com/en-us/answers/tags/436/azure-app-service

    https://learn.microsoft.com/en-us/answers/tags/455/entra-id (if involved)

    Gruß,

    Dimitar


Ihre Antwort

Fragesteller*innen können Antworten als akzeptierte Antworten markiert werden, wodurch Benutzer*innen wissen, dass diese Antwort das Problem gelöst hat.