Moin. Ich bin Sönke Schäfer, der Datenschäfer. Heute geht’s mal um was Ernstes: Azure SQL. Genauer: Wie Du mit VBA über ODBC sauber darauf zugreifst. Und zwar ohne Performance-Leichen und ohne nervige Dialoge.
Wenn Du Access oder Excel in einem KMU einsetzt und Daten in Azure SQL lagern willst, brauchst Du eine saubere Verbindung. Am besten stabil, ohne Benutzereingabe – und mit voller Kontrolle über den Connect-String.
Warum ODBC – und nicht direkt ADO?
Weil ODBC mittlerweile besser unterstützt wird, wenn es um Azure SQL geht. ADO geht auch – aber ODBC bringt stabilere Fehlerbehandlung, bessere Kompatibilität mit neuen Authentifizierungsmodellen und sauberes Timeout-Management.
Was brauchst Du?
- ODBC-Treiber 17 oder neuer für SQL Server
- Die Azure SQL-Verbindungsdaten
- VBA – z. B. aus Access heraus
Optional: Managed Identity oder Azure AD Auth – aber das behandeln wir ein andermal.
Beispiel: Verbindung mit Benutzername und Passwort
Du kannst eine ODBC-Verbindung auch per VBA erzeugen – komplett ohne vordefinierten DSN.
Function GetAzureConnection() As ADODB.Connection Dim conn As ADODB.Connection Set conn = New ADODB.Connection Dim connStr As String connStr = "Driver={ODBC Driver 17 for SQL Server};" & _ "Server=tcp:deinserver.database.windows.net,1433;" & _ "Database=deinedatenbank;" & _ "Uid=deinbenutzer;" & _ "Pwd=deinpasswort;" & _ "Encrypt=yes;" & _ "TrustServerCertificate=no;" & _ "Connection Timeout=30;" conn.Open connStr Set GetAzureConnection = connEnd Function
Danach kannst Du einfach loslegen:
Dim rs As ADODB.RecordsetSet rs = New ADODB.Recordsetrs.Open "SELECT TOP 10 * FROM Kunden", GetAzureConnection, adOpenForwardOnly, adLockReadOnly
ODBC-Verbindungsfehler abfangen
Azure wirft gern mal Fehler – z. B. bei Zeitüberschreitungen oder Auth-Problemen. Daher: sauber abfangen.
On Error GoTo Fehlerconn.Open connStrExit FunctionFehler:MsgBox "Verbindung fehlgeschlagen: " & Err.Description
Vorteile gegenüber klassischen DAO-Verknüpfungen
- Keine DSNs nötig
- Besseres Handling von Verbindungsabbrüchen
- Vollständig per Code steuerbar
- Schneller beim Abfragen großer Datenmengen
Du brauchst nicht mal die Tabellen zu verknüpfen – Du arbeitest rein über Recordsets oder gespeicherte Prozeduren.
Tipp: Nur die Daten abrufen, die Du brauchst
Bei Azure SQL zählt Performance. Also keine „SELECT *“, keine unnötigen Joins, keine offenen Recordsets ohne Grund.
„Wenn Du alles lädst, musst Du Dich nicht wundern, wenn alles langsam ist.“
Noch besser: DSN-less Verbindungen mit verschlüsselter Konfiguration
Pack die Verbindungszeichenfolge nicht hart in den Code. Hol sie aus einer verschlüsselten Tabelle oder Registry. Oder gib sie über ein Login-Formular ein. Sicherheit kommt nicht von allein.
Fazit vom Datenschäfer
Wenn Du Access oder VBA mit Azure SQL verbinden willst, mach es direkt, DSN-less und mit ODBC-Treiber 17 oder neuer. Dann hast Du Performance, Kontrolle und Zukunftssicherheit. Und wenn’s mal hakt – dann weißt Du wenigstens, wo Du suchen musst. Ich helf Dir gern dabei.
Datenschäfer: Analyse, Auswertung und Automatisierung für KMU im Norden 🐑