Azure Logic Apps のワークフローから SQL データベースに接続する

適用対象: Azure Logic Apps (従量課金 + Standard)

この記事では、SQL Server コネクタを使って Azure Logic Apps のワークフローから SQL データベースにアクセスする方法について説明します。 これにより、SQL データベースやその他システムでイベントによってトリガーされると実行する自動ワークフローを作成し、SQL データとリソースを管理するアクションを実行できます。

たとえば、データを取得、挿入、削除したり、SQL クエリやストアド プロシージャ実行したりできるアクションを、ワークフローで実行できます。 ワークフローでは、SQL 以外のデータベースで新しいレコードを調べ、何らかの処理作業を行い、その結果を使って SQL データベースに新しいレコードを作成して、新しいレコードに関するメール アラートを送信できます。

Azure Logic Apps を初めて使う場合は、次の作業開始ドキュメントをご覧ください。

サポートされている SQL のエディション

SQL Server コネクタでサポートされる SQL のエディションは次のとおりです。

コネクタに関するテクニカル リファレンス

SQL Server コネクタのバージョンは、ロジック アプリの種類とホスト環境に基づいて異なります。

ロジック アプリ 環境 コネクタのバージョン
従量課金プラン マルチテナント Azure Logic Apps デザイナーの [Standard] ラベルの下に表示される、マネージド コネクタ。 詳細については、次のドキュメントを確認してください。

- SQL Server マネージド コネクタのリファレンス
- Azure Logic Apps のマネージド コネクタ
従量課金プラン 統合サービス環境 (ISE) デザイナーの [Standard] ラベルの下に表示されるマネージド コネクタと、Standard クラスとは異なるメッセージ制限がある ISE バージョン。 詳細については、次のドキュメントを確認してください。

- SQL Server マネージド コネクタのリファレンス
- ISE メッセージの制限
- Azure Logic Apps のマネージド コネクタ
Standard シングルテナント Azure Logic Apps と App Service Environment v3 (Windows プランのみ) デザイナーの [Azure] ラベルの下に表示されるマネージド コネクタと、デザイナーの [組み込み] ラベルの下に表示され、サービス プロバイダー ベースの組み込みコネクタ。 組み込みバージョンには次のような違いがあります。

- 組み込みバージョンにはトリガーがありません。 SQL マネージド コネクタ トリガーか別のトリガーを使用できます。

- 組み込みバージョンでは、SQL データベースに直接接続し、Azure 仮想ネットワークにアクセスできます。 オンプレミス データ ゲートウェイは必要ありません。

詳細については、次のドキュメントを確認してください。

- SQL Server マネージド コネクタのリファレンス
- SQL Server の組み込みコネクタ リファレンス
- Azure Logic Apps の組み込みコネクタ

制限事項

詳細については、 SQL Server マネージド コネクタのリファレンス または SQL Server 組み込みコネクタのリファレンスを参照してください。

前提条件

  • Azure アカウントとサブスクリプション。 サブスクリプションをお持ちでない場合には、無料の Azure アカウントにサインアップしてください。

  • SQL Server データベースAzure SQL Database、または SQL Managed Instance

    SQL Server コネクタを使うには、呼び出されたコネクタの操作が結果を返すことができるように、テーブルにデータが含まれている必要があります。 たとえば、Azure SQL Database を使用する場合は、付属のサンプル データベースを使って SQL Server コネクタの操作を試すことができます。

  • SQL データベース接続を作成するために必要な情報 (SQL サーバーやデータベースの名前など)。 Windows 認証または SQL Server 認証を使用してアクセスを認証する場合は、ユーザー名とパスワードも必要です。 通常、この情報は接続文字列で確認できます。

    重要

    Azure portal から直接コピーした SQL Server 接続文字列を使用する場合は、接続文字列に手動でパスワードを追加する必要があります。

    • Azure の SQL データベースの場合、接続文字列は次のような形式です。

      Server=tcp:{your-server-name}.database.windows.net,1433;Initial Catalog={your-database-name};Persist Security Info=False;User ID={your-user-name};Password={your-password};MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;

      1. Azure portal でこの文字列を探すには、データベースを開きます。

      2. データベース メニューで、[プロパティ] の下の [接続文字列] を選択します。

    • オンプレミスの SQL Server の場合、接続文字列は次のような形式です。

      Server={your-server-address};Database={your-database-name};User Id={your-user-name};Password={your-password};

  • SQL データベースにアクセスするロジック アプリ ワークフロー。 SQL Server トリガー操作でワークフローを開始する場合は、空のワークフローから開始する必要があります。 SQL Server アクションを使用するには、任意のトリガーでワークフローを開始します。

  • オンプレミスの SQL Server に接続する場合は、従量課金または Standard のどちらのロジック アプリ ワークフローを使っているかに基づいて、次の追加要件が適用されます。

    • 従量課金プラン ロジック アプリ ワークフロー

    • Standard ロジック アプリ ワークフロー

      SQL Server 組み込みコネクタまたはマネージド コネクタを使用できます。

      • ロジック アプリで Azure Active Directory 認証またはマネージド ID 認証を使用するには、これらの認証の種類を操作するように SQL Server を設定する必要があります。 詳細については、認証 - SQL Server マネージド コネクタ リファレンスに関する記事をご覧ください。

      • 組み込みコネクタを使用するには、マネージド ID、Azure Active Directory、接続文字列のいずれかを使用して接続を認証できます。 接続文字列でパラメーターを指定することで、接続プールを調整できます。 詳細については、接続プールに関するページを参照してください。

      • SQL Server マネージド コネクタを使用するには、マルチテナントの Azure Logic Apps での従量課金ロジック アプリ ワークフローと同じ要件に従います。 その他のコネクタ要件については、SQL Server マネージド コネクタのリファレンスを参照してください。

SQL Server トリガーを追加する

次に示す手順では Azure portal を使用しますが、適切な Azure Logic Apps 拡張機能を使用すれば、次のツールでロジック アプリ ワークフローを作成することもできます。

  1. Azure portal で、空のロジック アプリ ワークフローをデザイナーで開きます。

  2. 使用する SQL Server トリガーを見つけて選びます。

    1. デザイナーで、検索ボックスの下の [Standard] を選択します。

    2. 検索ボックスに、「sql server」と入力します。

    3. トリガーの一覧から、使用する SQL トリガーを選択します。

      この例では、[項目が作成されたとき] という名前のトリガーを使用します。

      Azure portal の従量課金プラン ロジック アプリ ワークフロー デザイナーを示すスクリーンショット。検索ボックスに「sql server」と入力され、[項目が作成されたとき] というトリガーが選択されています。

  3. 接続に関する情報を指定します。 完了したら [作成] を選択します。

  4. トリガー情報ボックスが表示されたら、トリガーでテーブルを確認する間隔と頻度を指定します。

  5. このトリガーで使用できる他のプロパティを追加するには、[新しいパラメーターの追加] の一覧を開き、対象のプロパティを選択します。

    このトリガーでは、選択したテーブルから 1 行のみが返され、それ以外には何も返されません。 他のタスクを実行するには、ロジック アプリ ワークフローで必要な次のタスクを実行する SQL Server コネクタ アクションまたは別のアクションを追加して続行します。

    たとえば、この行のデータを表示するには、返された行のフィールドを含むファイルを作成する他のアクションを追加し、電子メール通知を送信します。 このコネクタで使用できるその他のアクションの詳細については、SQL Server マネージド コネクタのリファレンスを参照してください。

  6. 完了したら、ワークフローを保存します。 デザイナーのツール バーで、 [保存] を選択します。

ワークフローを保存すると、この手順により、デプロイされたロジック アプリ (Azure に公開されている) に更新プログラムが自動的に発行されます。 トリガーだけでは、ワークフローは指定されたスケジュールに基づいて SQL データベースをチェックするだけです。 トリガーに応答するアクションを追加する必要があります。

SQL Server アクションを追加する

次に示す手順では Azure portal を使用しますが、適切な Azure Logic Apps 拡張機能を使用すれば、Visual Studio で従量課金プラン ロジック アプリ ワークフローを編集したり、Visual Studio Code で次のロジック アプリ ワークフローを編集したりすることができます。

この例では、ロジック アプリ ワークフローが繰り返しトリガーで起動され、SQL データベースから 1 行を取得するアクションを呼び出します。

  1. Azure portal で、ロジック アプリ ワークフローをデザイナーで開きます。

  2. 使用する SQL Server アクションを見つけて選択します。

    この例では、[1 行を取得] というアクションを使用します。

    1. SQL アクションを追加するトリガーまたはアクションで、 [新しいステップ] を選択します。

      または、既存のステップの間にアクションを追加するには、接続矢印の上にポインターを移動します。 表示されるプラス記号 ( + ) を選択してから、 + を選択します。

    2. [操作を選択してください] の検索ボックスで、[Standard] を選択します。

    3. 検索ボックスに、「sql server」と入力します。

    4. アクションの一覧から、目的の SQL Server アクションを選択します。

      この例では、1 つのレコードを取得する [行の取得] アクションを使用します。

      Azure portal の従量課金プラン ロジック アプリのワークフロー デザイナーを示すスクリーンショット。検索ボックスに「sql server」と入力され、[アクション] 一覧で [行の取得] が選択されています。

  3. 接続に関する情報を指定します。 完了したら [作成] を選択します。

  4. SQL Server 名とデータベース名をまだ指定していない場合は、それらの値を指定します。 そうでない場合は、[テーブル名] の一覧から使用するテーブルを選択します。 [行 ID] プロパティに、目的のレコードの ID を入力します。

    この例のテーブル名は SalesLT.Customer です。

    従量課金プラン ワークフロー デザイナーを示すスクリーンショット。[行の取得] アクションと、[テーブル名] プロパティ値と空白の行 ID の例が表示されています。

    このアクションでは、選択したテーブルから 1 行のみが返され、それ以外は何も行われません。 この行のデータを表示するには、他のアクションを追加します。 たとえば、そのようなアクションで、返される行のフィールドが含まれるファイルを作成し、そのファイルをクラウド ストレージ アカウントに格納します。 このコネクタで使用できるその他のアクションの詳細については、コネクタのリファレンス ページを参照してください。

  5. 完了したら、ワークフローを保存します。 デザイナーのツール バーで、 [保存] を選択します。

データベースに接続する

サービスまたはシステムに接続するトリガーまたはアクションを追加していて、既存またはアクティブな接続がない場合、Azure Logic Apps は、接続の種類によって異なる接続情報を提供するように求めるプロンプトを表示します。次に例を示します。

  • アカウントの資格情報
  • 接続に使用する名前
  • サーバーまたはシステムの名前
  • 使用する認証の種類
  • 接続文字列

この情報を入力したら、ターゲット データベースに基づいて次の手順に進みます。

Azure SQL Database または SQL Managed Instance に接続する

オンプレミス データ ゲートウェイまたは統合サービス環境を使用せずに SQL Managed Instance にアクセスするには、SQL Managed Instance でパブリック エンドポイントを設定する必要があります。 パブリック エンドポイントによってポート 3342 が使用されるので、ロジック アプリからの接続を作成するときに、このポート番号を必ず指定します。

接続情報ボックスで、次の手順を実行します。

  1. [接続名] に、接続に使用する名前を入力します。

  2. [認証の種類] で、Azure SQL Database または SQL Managed Instance のデータベースで必要であり、かつ有効になっている認証を選択します。

    認証 説明
    接続文字列 - SQL Server 組み込みコネクタを使用する Standard ワークフローでのみサポートされます。

    - SQL サーバーとデータベースに接続文字列が必要になります。
    ロジック アプリのマネージド ID - SQL Server マネージド コネクタと ISE バージョン対応コネクタでサポートされます。 Standard ワークフローでは、この認証の種類は SQL Server 組み込みコネクタで使用できますが、代わりにオプションの名前がマネージド ID になります。

    - 以下の項目が必要です。

    --- ロジック アプリ リソースで有効になっていて、かつデータベースにアクセスできる有効なマネージド ID。

    --- SQL Server リソースに対する SQL DB 共同作成者ロールのアクセス権。

    --- SQL Server リソースが含まれているリソース グループに対する共同作成者のアクセス権。

    詳しくは、次のドキュメントをご覧ください。

    - SQL Server コネクタのマネージド ID 認証
    - SQL - サーバー レベルのロール
    Active Directory OAuth - SQL Server 組み込みコネクタを使用する Standard ワークフローでのみサポートされます。 詳しくは、次のドキュメントをご覧ください。

    - SQL Server コネクタの認証
    - Azure Active Directory Open Authentication (Azure AD OAuth) の有効化
    - Azure Active Directory Open Authentication
    サービス プリンシパル (Azure AD アプリケーション) - SQL Server マネージド コネクタでサポートされます。

    - Azure AD アプリケーションとサービス プリンシパルが必要です。 詳細については、リソースにアクセスできる Azure AD アプリケーションとサービス プリンシパルを Azure portal で作成する方法に関する記事を参照してください。
    Azure AD 統合 - SQL Server マネージド コネクタと ISE バージョン対応コネクタでサポートされます。

    - ロジック アプリ リソースで有効になっていて、かつデータベースにアクセスできる、Azure Active Directory (Azure AD) の有効なマネージド ID が必要です。 詳細については、以下のトピックを参照してください。

    - -
    - -
    - -
    SQL Server 認証 - SQL Server マネージド コネクタと ISE バージョン対応コネクタでサポートされます。

    - 以下の項目が必要です。

    --- 以前に Azure で接続用に作成されたデータ ゲートウェイ リソース (ロジック アプリの場所がマルチテナント Azure Logic Apps と ISE のどちらであるかは無関係)。

    --- SQL Server データベースで作成されて保存されている有効なユーザー名と強力なパスワード。 詳細については、次のトピックを参照してください。

    - -
    - -

    次の例は、SQL Server "マネージド" コネクタを使用し、Azure AD 統合認証を選択する場合の接続情報ボックスの表示方法を示しています。

    • 従量課金プラン ロジック アプリ ワークフロー

      Azure portal、ワークフロー デザイナー、SQL Server クラウド接続情報 (認証の種類に従量課金プランが選択された状態) の画面を示すスクリーンショット。

    • Standard ロジック アプリ ワークフロー

      Azure portal、ワークフロー デザイナー、SQL Server クラウド接続情報 (認証の種類に標準が選択された状態) の画面を示すスクリーンショット。

  3. [Azure AD 統合] を選択した後に、[サインイン] を選択します。 Azure SQL Database または SQL Managed Instance のどちらを使用するかに基づいて、認証用のユーザー資格情報を選択します。

  4. データベースに対して次の値を選択します。

    プロパティ 必須 説明
    サーバー名 はい SQL Server のアドレス (例: Fabrikam-Azure-SQL.database.windows.net)
    データベース名 はい SQL データベースの名前 (例: Fabrikam-Azure-SQL-DB)
    [テーブル名] はい 使用するテーブル (例: SalesLT.Customer)

    ヒント

    データベースとテーブルの情報を指定するには、次のオプションがあります。

    • データベースの接続文字列でこの情報を確認します。 たとえば、Azure portal でデータベースを探して開きます。 データベース メニューで、[接続文字列] または [プロパティ] を選択すると、次の文字列が見つかります。

      Server=tcp:{your-server-address}.database.windows.net,1433;Initial Catalog={your-database-name};Persist Security Info=False;User ID={your-user-name};Password={your-password};MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;

    • 既定では、システム データベース内のテーブルはフィルターで除外されるため、システム データベースを選択したときに自動的に表示されない場合があります。 別の方法として、データベース一覧から [カスタム値の入力] を選択した後、テーブル名を手動で入力することもできます。

    このデータベース情報ボックスの例を次に示します。

    • 従量課金プラン ロジック アプリ ワークフロー

      SQL クラウド データベース クラウド情報と従量課金プランのサンプル値を示すスクリーンショット。

    • Standard ロジック アプリ ワークフロー

      SQL クラウド データベース情報と Standard のサンプル値を示すスクリーンショット。

  5. 次に、「SQL トリガーを追加する」または「SQL アクションを追加する」でまだ完了していない手順を続行します。

オンプレミスの SQL Server に接続する

接続情報ボックスで、次の手順を実行します。

  1. オンプレミスのデータ ゲートウェイを必要とするオンプレミスの SQL Server への接続の場合は、これらの前提条件が満たされていることを確認します。

    そうでないと、接続を作成するときに、 [接続ゲートウェイ] の一覧にお使いのデータ ゲートウェイ リソースが表示されません。

  2. [認証の種類] では、SQL Server で必要であり、有効にされている認証を選択します。

    認証 説明
    SQL Server 認証 - SQL Server マネージド コネクタ、SQL Server 組み込みコネクタと ISE バージョン管理コネクタでサポートされています。

    - 以下の項目が必要です。

    --- 以前に Azure で接続用に作成されたデータ ゲートウェイ リソース (ロジック アプリの場所がマルチテナント Azure Logic Apps と ISE のどちらであるかは無関係)。

    --- SQL Server で作成されて保存されている有効なユーザー名と強力なパスワード。

    詳細については、SQL Server 認証に関する記事を参照してください。
    Windows 認証 - SQL Server マネージド コネクタでサポートされます。

    - 以下の項目が必要です。

    --- 以前に Azure で接続用に作成されたデータ ゲートウェイ リソース (ロジック アプリの場所がマルチテナント Azure Logic Apps と ISE のどちらであるかは無関係)。

    --- Windows アカウントから ID を確認するための有効な Windows ユーザー名とパスワード。

    詳細については、Windows 認証に関する記事を参照してください。
  3. SQL データベースに関する次の値を選択または指定します。

    プロパティ 必須 説明
    SQL サーバー名 はい SQL サーバーのアドレス (例: Fabrikam-Azure-SQL.database.windows.net)
    SQL データベース名 はい SQL Server データベースの名前 (例: Fabrikam-Azure-SQL-DB)
    ユーザー名 はい SQL サーバーおよびデータベースのユーザー名
    パスワード はい SQL サーバーおよびデータベースのパスワード
    サブスクリプション はい (Windows 認証の場合) Azure で前に作成したデータ ゲートウェイ リソースの Azure サブスクリプション
    接続ゲートウェイ はい (Windows 認証の場合) Azure で前に作成したデータ ゲートウェイ リソースの名前



    ヒント:ゲートウェイが一覧に表示されない場合は、正しくゲートウェイを設定していることを確認します。

    ヒント

    この情報は、データベースの接続文字列で確認できます。

    • Server={your-server-address}
    • Database={your-database-name}
    • User ID={your-user-name}
    • Password={your-password}

    次の例は、 Windows 認証を選択した場合の接続情報ボックスの表示方法を示しています。

    • 従量課金プラン ロジック アプリ ワークフロー

      Azure portal、ワークフロー デザイナー、SQL Server オンプレミス接続情報 (認証に従量課金プランが選択された状態) の画面を示すスクリーンショット。

    • Standard ロジック アプリ ワークフロー

      Azure portal、ワークフロー デザイナー、SQL Server オンプレミス接続情報 (認証に Standard が選択された状態) の画面を示すスクリーンショット。

  4. 準備ができたら、 [作成] を選択します。

  5. 次に、「SQL トリガーを追加する」または「SQL アクションを追加する」でまだ完了していない手順を続行します。

一括データを処理します。

サイズが大きすぎてコネクタが同時にすべての結果を返さない結果セットを操作することが必要な場合があります。 または、結果セットのサイズと構造を詳細に制御したい場合があります。 次の一覧は、このような大きな結果セットを処理するいくつかの方法です。

  • 結果を、より小さなセットとして管理しやすくするには、改ページ位置の自動修正をオンします。 詳細は、「Get bulk data, records, and items by using pagination」(改ページ位置の自動修正を使用した一括データ、レコードおよび項目) を参照してください。 詳細については、「Logic Apps での一括データ転送に対する SQL の改ページ処理」を参照してください。

  • 希望どおりの結果を編成する "ストアド プロシージャ" を作成します。 SQL データベース テーブルを操作するビジネス タスクをより簡単に自動化できるように、SQL Server コネクタには、Azure Logic Apps を使用してアクセスできる多数のバックエンド機能が用意されています。

    SQL アクションで複数の行を取得または挿入する場合は、ロジック アプリ ワークフローでここに示す制限内で until ループを使用して、対象の行を反復処理できます。 ただし、ロジック アプリは、数千から数百万の行がある非常に大きなレコード セットを処理する場合があります。このような場合は、データベースへの呼び出しコストを最小限にする必要があります。

    代わりに、SQL インスタンスで実行され、SELECT - ORDER BYステートメントを使用して、望みどおりの方法で結果を整理する "ストアド プロシージャ" を作成できます。 このソリューションでは、結果のサイズと構造を詳細に制御できます。 ロジック アプリは、SQL Server コネクタの [ストアド プロシージャの実行] アクションを使用して、ストアド プロシージャを呼び出します。 詳細については、「SELECT - ORDER BY 句」を参照してください。

    Note

    SQL Server コネクタには、2 分未満のストアド プロシージャのタイムアウト上限があります。 一部のストアド プロシージャでは、この上限を超えることがあり、504 Timeout エラーが発生します。 この問題を回避するには、SQL 完了トリガー、ネイティブ SQL パススルー クエリ、状態テーブル、およびサーバー側ジョブを使用します。

    このタスクでは、Azure SQL DatabaseAzure エラスティック ジョブ エージェントを使用できます。 オンプレミスの SQL ServerSQL Managed Instance では、SQL Server エージェントを使用できます。 詳しくは、Azure Logic Apps の SQL Server コネクタで長時間実行されるストアド プロシージャのタイムアウトの処理に関するページをご覧ください。

動的な一括データを処理する

SQL Server コネクタを使用してストアド プロシージャを呼び出すと、返される出力が動的になることがあります。 このシナリオでは、次の手順を実行します。

  1. Azure portal で、ロジック アプリ ワークフローをデザイナーで開きます。

  2. テスト実行を行って、出力形式を表示します。 サンプル出力をコピーして保存します。

  3. デザイナーで、ストアド プロシージャを呼び出すアクションの下に、新しいアクションを追加します。

  4. [操作を選択してください] ボックスで、[JSON の解析] というアクションを見つけて選択します。

  5. [JSON の解析] アクションで、 [サンプルのペイロードを使用してスキーマを生成する] を選択します。

  6. [サンプルの JSON ペイロードを入力するか、貼り付けます] ボックスにサンプル出力を貼り付けて、 [完了] を選択します。

    Note

    Azure Logic Apps がスキーマを生成できないというエラーが発生する場合は、サンプル出力の構文が正しい形式であることを確認してください。 それでもスキーマを生成できない場合は、 [スキーマ] ボックスにスキーマを手入力します。

  7. 完了したら、ワークフローを保存します。

  8. JSON コンテンツのプロパティを参照するには、それらのプロパティを参照する編集ボックス内をクリックして、動的コンテンツの一覧を表示します。 一覧の [JSON の解析] の見出しの下で、目的の JSON コンテンツ プロパティのデータ トークンを選択します。

次のステップ