次の方法で共有


C と C++ を使用して SQL Database に接続する

適用対象:Azure SQL データベース

この記事は、C および C++ 言語による開発者が Azure SQL データベース に接続する場合に役立ちます。

前提条件

このガイドの手順を完了するには、次のものが必要です:

  • アクティブな Azure アカウントアカウントがない場合、Azure 試用版にサインアップして、最大 10 件の無料 Mobile Apps を入手できます。 これがない場合は、 Azure の無料試用版にサインアップできます。
  • Visual Studio。 このサンプルをビルドして実行するには、C++ 言語コンポーネントをインストールする必要があります。
  • Visual Studio Linux Development。 Linux で開発する場合は、Visual Studio Linux 拡張機能もインストールする必要があります。

データ アクセス テクノロジ:ODBC および OLE DB

現在、Azure SQL データベースへの接続するには、ODBC (Open Database connectivity) と OLE DB (オブジェクトのリンクと埋め込みデータベース) の 2 通りの方法があります。 近年、Microsoft は、ネイティブのリレーショナル データベースにおいて ODBCと連携してきました。 ODBC は OLE DB よりもはるかに高速です。 ただし、ODBC は以前の C スタイルの API を使用しているという点で注意が必要です。

Azure SQL Database を作成する

作業の開始 」ページで、サンプル データベースを作成する方法についてご確認ください。

接続文字列を取得する

Azure SQL Database がプロビジョニングされたら、次の手順に従って接続情報を指定し、ファイアウォール アクセスのクライアント IP アドレスを追加する必要があります。

  1. Azure portal で、データベースの [概要] セクションの一部として一覧表示されている [データベース接続文字列の表示] を使用して、Azure SQL Database 接続文字列に移動します。

    SQL データベースの [概要] ページの Azure portal のスクリーンショット。[データベース接続文字列の表示] リンクが強調表示されています。

  2. [ ODBC ] タブを選択します。

    ODBC 接続文字列の Azure portal のスクリーンショット。

  3. ODBC (Node.js を含む) [SQL 認証] 文字列の内容をコピーします。 この文字列は後で C++ ODBC コマンド ライン インタープリターからの接続に使用します。 この文字列は、ドライバー、サーバー、その他のデータベース接続パラメーターといった詳細情報を提供します。

ファイアウォールに IP アドレスを追加する

  1. Azure SQL Database 論理サーバーに移動します。 SQL データベースの [概要] ページで [サーバー名] のリンクを選択するか、Azure portal 検索でそれに移動します。
  2. [セキュリティ][ネットワーク] を選択します。
  3. [ パブリック アクセス ] タブで、 選択したネットワーク を選択します (まだ選択されていない場合)。
  4. 次の手順を使用して、クライアント IP をファイアウォールに追加して、接続が正常に確立できることを確認します。 [ クライアント IPv4 アドレスの追加] を選択するか、ファイアウォール規則を追加します。

この時点で、Azure SQL Database を構成し、ワークステーションから C++ コードから接続する準備ができました。

ヒント

クライアントのワークステーション IP をパブリック ネットワーク ファイアウォールに追加することは、一時的なラボまたは学習のセットアップでは許容されますが、エンタープライズ ソリューションまたは有効期間の長いプロジェクトの場合は、次の セキュリティのベスト プラクティスに従ってください。

  • サーバー レベルで[ Azure サービスとリソースにこのサーバーへのアクセスを許可 する]をオフに設定します。
  • VNet サービス エンドポイントと VNet ファイアウォール規則を使用します。
  • Private Link を使います。

Windows C/C++ アプリケーションから接続する

Visual Studio でビルドするこちらのサンプルを使用すれば、Windows の ODBC を使用して Azure SQL Database に簡単に接続できます。 このサンプルでは、ODBC コマンド ライン インタープリターを使用して Azure SQL Database に接続します。 このサンプルでは、コマンドライン引数としてデータベース ソース名ファイル (DSN ファイル) か、先に Azure Portal からコピーした詳細な接続文字列を使用します。 このプロジェクトのプロパティ ページを表示し、次に示すように、コマンド引数に接続文字列を貼り付けます。

DSN Propsfile。

データベースの接続文字列の一部として、データベースの適切な認証情報が指定されていることを確認します。

アプリケーションを起動してビルドします。 正常な接続を検証する次のウィンドウが表示されます。 CREATE TABLEなどの基本的な SQL コマンドを実行して、データベース接続を検証することもできます。

odbcsql.exeの C++ 接続のスクリーンショット。

また、コマンド引数が指定されていないときに開くウィザードを使用して、DSN ファイルを作成することもできます。 このオプションも試してみることをお勧めします。 この DSN ファイルを使用すれば、認証設定を自動化して保護できます。

DSN ファイルの作成プロセスのスクリーンショット。[データ ソースの選択] ページ。

お疲れさまでした。 これで、C++ と Windows の ODBC を使用して Azure SQL に正しく接続できました。 引き続き Linux プラットフォーム向けの同様の記事もご覧ください。

Linux C/C++ アプリケーションから接続する

Visual Studio で C++ Linux アプリケーションを開発できます。 詳細については、次のブログ「Visual C++ for Linux Development」を参照してください。

Linux 向けにビルドするには、Linux ディストリビューションを実行しているリモート コンピューターが必要です。 使用できない場合は、 Linux Azure Virtual Machines とさまざまなデプロイ方法を使用してすばやくセットアップできます。

このガイドでは、Ubuntu 16.04 Linux ディストリビューションが設定されていることを前提としています。 この手順は、Ubuntu 15.10、Red Hat 6、Red Hat 7 でも適用されます。

次の手順では、ディストリビューションの SQL と ODBC に必要なライブラリをインストールします。

    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*

Visual Studio を起動します。 ツール ->Options ->Cross Platform->Connection Manager で、Linux ボックスに接続を追加します。

SSH 接続を作成および削除するための [ツール オプション] のスクリーンショット。

SSH 経由で接続が確立されたら、空のプロジェクト (Linux) テンプレートを作成します。

新しいプロジェクトのテンプレートのスクリーンショット。

次に、新しい C ソース ファイルを追加し、次の内容で置き換えます。 ODBC API SQLAllocHandleSQLSetConnectAttrSQLDriverConnectを使用すると、データベースへの接続を初期化して確立できます。

Windows ODBC サンプルと同様に、 SQLDriverConnect 呼び出しを、前に Azure portal からコピーしたデータベース接続文字列パラメーターの詳細に置き換える必要があります。

     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);

最後に、コンパイルする前に odbc をライブラリ依存関係として追加します。

ODBC を入力ライブラリとして追加するスクリーンショット。

アプリケーションを起動するには、 [デバッグ] メニューから Linux コンソールを表示します。

[Linux コンソール] メニュー オプションのスクリーンショット。

接続に成功すると、現在のデータベース名が Linux コンソールに表示されます。

Linux コンソール ウィンドウの出力のスクリーンショット。

お疲れさまでした。 これでガイドは終わりです。これで、Windows および Linux プラットフォームの C++ から Azure SQL データベース に接続できるようになりました。

詳細な C++ チュートリアル ソリューションを確認する

この記事のすべてのサンプルを含む GetStarted ソリューションは、GitHub にあります。