Freigeben über


Herstellen einer Verbindung mit SQL-Datenbank mit C und C++

Gilt für::Azure SQL-Datenbank

Dieser Artikel hilft C- und C++-Entwicklern, eine Verbindung mit Azure SQL-Datenbank herzustellen.

Voraussetzungen

Damit Sie die in dieser Anleitung gestellten Schritte ausführen können, benötigen Sie Folgendes:

  • Ein aktives Azure-Konto. Wenn Sie kein Konto haben, können Sie sich für eine kostenlose Azure-Testversionregistrieren.
  • Visual Studio. Sie müssen die C++-Sprachkomponenten installieren, um dieses Beispiel erstellen und ausführen zu können.
  • Visual Studio-Linux-Entwicklung. Wenn Sie unter Linux entwickeln, müssen Sie auch die Linux-Erweiterung für Visual Studio installieren.

Datenzugriffstechnologien: ODBC und OLE DB

Derzeit gibt es zwei Möglichkeiten, die Verbindung mit Azure SQL-Datenbank herzustellen: ODBC (Open Database Connectivity) und OLE DB (Object Linking and Embedding Database). In den letzten Jahren hat Microsoft eine Anpassung an ODBC in Bezug auf den Zugriff auf native relationale Daten durchgeführt. ODBC ist viel schneller als OLE DB. Der einzige Nachteil ist, dass für ODBC eine ältere API im C-Stil verwendet wird.

Erstellen der Azure SQL-Datenbank

Auf der Seite für erste Schritte erhalten Sie Informationen zum Erstellen einer Beispieldatenbank.

Abrufen der Verbindungszeichenfolge

Nachdem Ihre Azure SQL-Datenbank-Instanz bereitgestellt wurde, müssen Sie die folgenden Schritte ausführen, um die Verbindungsinformationen zu ermitteln und Ihre Client-IP-Adresse für den Firewallzugriff hinzuzufügen.

  1. Gehen Sie im Azure-Portal zu Ihrer Azure SQL Database Verbindungszeichenfolgen, indem Sie die Datenbankverbindungszeichenfolgen anzeigen verwenden, die als Element des Abschnitts Übersicht für Ihre Datenbank aufgeführt sind:

    Screenshot des Azure-Portals einer Sql-Datenbankübersichtsseite. Der Link

  2. Wählen Sie die Registerkarte ODBC aus.

    Screenshot aus dem Azure-Portal einer ODBC-Verbindungszeichenfolge.

  3. Kopieren Sie den Inhalt der Zeichenfolge ODBC (Includes Node.js) [SQL authentication] . Wir verwenden diese Zeichenfolge später, um die Verbindung vom C++-ODBC-Befehlszeileninterpreter herzustellen. Diese Zeichenfolge enthält Details wie Treiber, Server und andere Parameter für die Datenbankverbindung.

Hinzufügen Ihrer IP zur Firewall

  1. Wechseln Sie zu Ihrem logischen Azure SQL-Datenbankserver. Wählen Sie auf der Seite "Übersicht" Ihrer SQL-Datenbank den Link für den Servernamen aus, oder navigieren Sie über die Azure-Portalsuche dorthin.
  2. Wählen Sie unter Sicherheit die Option Netzwerk aus.
  3. Wählen Sie auf der Registerkarte " Öffentlicher Zugriff " die Option "Ausgewählte Netzwerke " aus, sofern noch nicht.
  4. Fügen Sie Ihre Client-IP mithilfe dieser Schritte zur Firewall hinzu, um sicherzustellen, dass wir eine erfolgreiche Verbindung herstellen können. Wählen Sie "Client-IPv4-Adresse hinzufügen " aus, oder fügen Sie eine Firewallregel hinzu.

Zu diesem Zeitpunkt haben Sie Ihre Azure SQL-Datenbank konfiguriert und können von Ihrem C++-Code aus ihrer Arbeitsstation eine Verbindung herstellen.

Tipp

Das Hinzufügen der Arbeitsstations-IP Ihres Clients zur Firewall des öffentlichen Netzwerks ist für ein temporäres Labor oder ein Lernsetup akzeptabel, aber für eine Unternehmenslösung oder ein langlebiges Projekt befolgen Sie die folgenden bewährten Methoden für sicherheit:

  • Legen Sie Zugriff von Azure Diensten und Ressourcen auf diesen Server erlauben auf der Server-Ebene auf AUS fest.
  • Verwenden Sie VNET-Dienstendpunkte und VNET-Firewallregeln.
  • Verwenden Sie Private Link.

Herstellen einer Verbindung von einer Windows-C/C++-Anwendung

Sie können auf einfache Weise für Azure SQL-Datenbank per ODBC unter Windows eine Verbindung herstellen, indem Sie dieses Beispiel verwenden, das mit Visual Studio erstellt wird. Im Beispiel wird ein ODBC-Befehlszeileninterpreter implementiert, der verwendet werden kann, um eine Verbindung mit der Azure SQL-Datenbank-Instanz herzustellen. In diesem Beispiel wird entweder eine Datenbankquellenname-Datei (DSN) als Befehlszeilenargument oder die ausführliche Verbindungszeichenfolge verwendet, die wir zuvor aus dem Azure-Portal kopiert haben. Rufen Sie die Eigenschaftenseite für dieses Projekt auf, und fügen Sie die Verbindungszeichenfolge wie hier dargestellt als Befehlsargument ein:

DSN-Propsfile.

Achten Sie darauf, dass Sie die richtigen Authentifizierungsdetails für Ihre Datenbank als Teil der Datenbank-Verbindungszeichenfolge angeben.

Starten Sie die Anwendung, um die Erstellung durchzuführen. Das folgende Fenster mit dem Hinweis, dass die Verbindung erfolgreich hergestellt wurde, sollte angezeigt werden. Sie können sogar einige grundlegende SQL-Befehle CREATE TABLE ausführen, die ihre Datenbankkonnektivität überprüfen:

Screenshot der C++-Verbindungen in odbcsql.exe.

Alternativ hierzu können Sie auch eine DSN-Datei mit dem Assistenten erstellen, der gestartet wird, wenn keine Befehlsargumente angegeben werden. Wir empfehlen Ihnen, diese Option ebenfalls auszuprobieren. Sie können diese DSN-Datei für die Automation und den Schutz Ihrer Authentifizierungseinstellungen verwenden:

Screenshot des Vorgangs zum Erstellen der DSN-Datei, der Seite

Glückwunsch! Sie haben mit C++ und ODBC unter Windows jetzt eine Verbindung mit Azure SQL hergestellt. Sie können weiterlesen, um sich auch über die Vorgehensweise für die Linux-Plattform zu informieren.

Herstellen einer Verbindung von einer Linux-C/C++-Anwendung

Sie können C++-Linux-Anwendungen in Visual Studio entwickeln. Weitere Informationen finden Sie im folgenden Blog: Visual C++ für Linux-Entwicklung.

Für die Linux-Erstellung benötigen Sie einen Remotecomputer, auf dem Ihre Linux-Distribution ausgeführt wird. Wenn Sie keins haben, können Sie schnell eins mit virtuellen Linux-Azure-Computern und einer Vielzahl von Bereitstellungsmethoden einrichten.

Diese Anleitung nimmt an, dass Sie eine Linux-Distribution vom Typ Ubuntu 16.04 eingerichtet haben. Die angegebenen Schritte gelten auch für Ubuntu 15.10, Red Hat 6 und Red Hat 7.

Mit den folgenden Schritten werden die erforderlichen Bibliotheken für SQL und ODBC für Ihre Distribution installiert:

    sudo su
    sh -c 'echo "deb [arch=amd64] https://apt-mo.trafficmanager.net/repos/mssql-ubuntu-test/ xenial main" > /etc/apt/sources.list.d/mssqlpreview.list'
    sudo apt-key adv --keyserver apt-mo.trafficmanager.net --recv-keys 417A0893
    apt-get update
    apt-get install msodbcsql
    apt-get install unixodbc-dev-utf16 #this step is optional but recommended*

Starten Sie Visual Studio. Fügen Sie unter Tools ->Optionen ->Cross-Platform ->Verbindungsmanager eine Verbindung zu Ihrem Linux-Rechner hinzu:

Screenshot der Tools-Optionen zum Erstellen und Entfernen von SSH-Verbindungen.

Erstellen Sie nach dem Herstellen der Verbindung per SSH eine leere Projektvorlage (Linux):

Screenshot der Vorlagen für neue Projekte.

Anschließend können Sie eine neue C-Quelldatei hinzufügen und diesen Inhalt einfügen. Mit den ODBC-APIs SQLAllocHandleSQLSetConnectAttrund SQLDriverConnect,, sollten Sie in der Lage sein, eine Verbindung mit Ihrer Datenbank zu initialisieren und herzustellen.

Wie im Windows ODBC-Beispiel müssen Sie den SQLDriverConnect Aufruf durch die Details aus den zuvor aus dem Azure-Portal kopierten Parametern der Datenbankverbindungszeichenfolge ersetzen.

     retcode = SQLDriverConnect(
        hdbc, NULL, "Driver=ODBC Driver 13 for SQL"
                    "Server;Server=<yourserver>;Uid=<yourusername>;Pwd="
                    "<password>;database=<yourdatabase>",
        SQL_NTS, outstr, sizeof(outstr), &outstrlen, SQL_DRIVER_NOPROMPT);

Der letzte Schritt vor dem Kompilieren ist das Hinzufügen von odbc als Bibliotheksabhängigkeit:

Screenshot des Hinzufügens von ODBC als Eingabebibliothek.

Rufen Sie die Linux-Konsole über das Menü Debuggen auf, um die Anwendung zu starten:

Screenshot der Menüoption

Wenn die Verbindung erfolgreich hergestellt wurde, wird in der Linux-Konsole jetzt der aktuelle Datenbankname angezeigt:

Screenshot der Linux-Konsolenfenster-Ausgabe.

Glückwunsch! Sie haben die Anleitung erfolgreich abgeschlossen und können über C++ auf Windows- und Linux-Plattformen jetzt eine Verbindung mit Ihrer Azure SQL-Datenbank-Instanz herstellen.

Herunterladen der vollständigen Projektmappe für das C/C++-Tutorial

Sie finden die GetStarted Lösung, die alle Beispiele in diesem Artikel auf GitHub enthält: