次の方法で共有


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 マネージド コネクタ。コネクタ ギャラリーの [共有] に表示されます。 詳細については、次のドキュメントを確認してください。

- SQL Server マネージド コネクタのリファレンス
- Azure Logic Apps のマネージド コネクタ
標準 シングルテナント Azure Logic Apps と App Service Environment v3 (Windows プランのみ) マネージド コネクタ。コネクタ ギャラリーの [ 共有] の下に表示され、組み込みコネクタは、コネクタ ギャラリーの [組み込み ] の下に表示され、 サービス プロバイダー ベースです。 組み込みコネクタには次のような違いがあります。

- 組み込みコネクタは、オンプレミス データ ゲートウェイを使用せずに接続文字列を使用して、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 接続文字列を使用する場合は、接続文字列にパスワードを手動で追加する必要があります。 この文字列などの機密情報については、使用可能な最も安全な認証フローを使用してください。 Microsoft では、可能な場合はマネージド ID を使用して Azure リソースへのアクセスを認証し、必要最小限の特権を持つロールを割り当てることをお勧めします。

    この機能を使用できない場合は必ず、Azure Key Vault など、Standard ワークフローのアプリ設定で使用できる他の手段を使用して接続文字列をセキュリティで保護してください。 これで、接続文字列やキーなど、セキュリティで保護された文字列を直接参照できます。 デプロイ時に環境変数を定義できる ARM テンプレートと同様に、Standard ロジック アプリのワークフロー定義内でアプリ設定を定義できます。 そうしておいて、接続エンドポイントやストレージ文字列などの動的に生成されるインフラストラクチャ値を取得できます。 詳細については、「Microsoft ID プラットフォームのアプリケーションの種類」を参照してください。

    • 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};

  • Standard ワークフローで SQL 組み込みトリガーを使用するには、トリガーを使用するテーブルで変更の追跡を有効にする必要があります。 詳細については、「変更の追跡の有効化と無効化」を参照してください。

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

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

    • 消費ワークフロー

      マルチテナント Azure Logic Apps では、ローカル コンピューターにインストールされたオンプレミス データ ゲートウェイと、Azure で既に作成されているデータ ゲートウェイ リソースが必要です。

    • 標準ワークフロー:

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

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

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

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

SQL Server トリガーを追加する

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

  1. Azure portal で、従量課金ロジック アプリ リソースを開きます。

  2. リソース サイドバー メニューの [開発ツール] で、デザイナーを選択して空のワークフローを開きます。

  3. 一般的な手順に従ってトリガーを追加し、シナリオに合わせて SQL Server マネージド トリガーを追加します。

    この例では、項目が作成されたときにという名前の SQL Server トリガーを続行します。

  4. 求められた場合は、接続に関する情報を入力します。 完了したら、[ 新規作成] を選択します。

  5. トリガー情報ボックスが表示されたら、選んだトリガーで必要になる必須情報を入力します。

    この例では、項目が作成されたときという名前のトリガーで、SQL サーバー名とデータベース名の値を、これまでに入力していなかった場合は入力します。 そうでない場合は、[テーブル名] の一覧から使用するテーブルを選択します。 [頻度][間隔] を選択して、トリガーで新しい項目を確認するスケジュールを設定します。

  6. 詳細パラメーターの一覧から、使用可能なその他のパラメーターを追加します。

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

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

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

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

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

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

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

  1. Azure portal で、従量課金ロジック アプリ リソースを開きます。

  2. リソース サイドバー メニューの [開発ツール] で、デザイナーを選択してワークフローを開きます。

  3. アクションを追加する一般的な手順に従って、 必要な SQL Server マネージドアクションを追加します

    この例では、1 つのレコードを取得する "行の取得" という名前の SQL Server アクションを続行します。

  4. 求められた場合は、接続に関する情報を入力します。 完了したら [作成] を選択します。

  5. アクション情報ボックスが表示されたら、[テーブル名] リストから、使用するテーブルを選択します。 [行 ID] プロパティに、目的のレコードの ID を入力します。

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

    スクリーンショットには、「消費ワークフロー デザイナー」と「行の取得」という名前のアクションが示され、例のテーブル名と空の行 ID が含まれています。

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

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

データベースに接続する

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

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

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

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

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

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

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

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

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

    SQL サーバーとデータベースへの接続文字列が必要です。
    Active Directory OAuth SQL Server 組み込みコネクタを使用する Standard ワークフローでのみサポートされます。 詳しくは、次のドキュメントをご覧ください。

    - SQL Server コネクタの認証
    - Microsoft Entra ID で OAuth 2.0 を有効にする
    ロジック アプリのマネージド ID SQL Server マネージド コネクタでサポートされます。 Standard ワークフローでは、この認証の種類は SQL Server 組み込みコネクタで使用できますが、代わりにオプションの名前がマネージド ID になります。

    次の項目が必要です。

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

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

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

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

    - SQL Server コネクタのマネージド ID 認証
    - Server-Level 役割
    サービス プリンシパル (Microsoft Entra アプリケーション) SQL Server マネージド コネクタでサポートされます。

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

    ロジック アプリ リソースで有効になっており、データベースにアクセスできる、Microsoft Entra の有効なマネージド ID が必要です。 詳細については、次の記事を参照してください。

    - Azure SQL セキュリティの概要 - 認証
    - Azure SQL へのデータベース アクセスを承認する - 認証と承認
    - Azure SQL の Microsoft Entra 認証
    SQL Server 認証 SQL Server マネージド コネクタでサポートされます。

    次の項目が必要です。

    - ロジック アプリがマルチテナント Azure Logic Apps 内にあるかどうかに関係なく、接続用に Azure で以前に作成されたデータ ゲートウェイ リソース。

    - SQL Server データベースに作成および格納される有効なユーザー名と強力なパスワード。 詳細については、次の記事を参照してください。

    - Azure SQL セキュリティの概要 - 認証
    - Azure SQL へのデータベース アクセスを承認する - 認証と承認

    次の例は、SQL Server マネージド コネクタを使用して Microsoft Entra 統合 認証を選択した場合に、接続情報ボックスがどのように表示されるかを示しています。

    選択した認証の種類を含む SQL Server クラウド接続情報を示すスクリーンショット。

  3. [Microsoft Entra 統合] を選択した後、[サインイン] を選択します。 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 クラウド データベース情報を示すスクリーンショット。

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

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

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

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

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

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

    認証 説明
    SQL Server 認証 SQL Server マネージド コネクタと SQL Server 組み込みコネクタでサポートされます。

    次の項目が必要です。

    - ロジック アプリがマルチテナント Azure Logic Apps 内にあるかどうかに関係なく、接続用に Azure で以前に作成されたデータ ゲートウェイ リソース。

    - SQL Server に作成および格納される有効なユーザー名と強力なパスワード。

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

    次の項目が必要です。

    - ロジック アプリがマルチテナント Azure Logic Apps 内にあるかどうかに関係なく、接続用に Azure で以前に作成されたデータ ゲートウェイ リソース。

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

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

    プロパティ 必須 説明
    SQL サーバー名 はい SQL Server のアドレス (例: 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 認証を選択した場合の接続情報ボックスの表示方法を示しています。

    選択した認証を含む SQL Server オンプレミス接続情報を示すスクリーンショット。

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

  5. SQL トリガーの追加 」または「SQL アクションの追加」でまだ完了していない手順 に進みます

一括データを処理する

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

  • 結果を、より小さなセットとして管理しやすくするには、改ページ位置の自動修正をオンします。 詳細については、「 Azure Logic Apps で改ページ位置を使用して、さらに多くのデータ、項目、またはレコードを取得する」を参照してください。 詳細については、「Logic Apps での一括データ転送に対する SQL の改ページ処理」を参照してください。

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

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

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

    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. デザイナーで、ストアド プロシージャを呼び出すアクションの下に、JSON の解析という名前の組み込みアクションを追加します。

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

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

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

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

  7. JSON コンテンツ プロパティを参照するには、次の手順に従います。

    1. JSON プロパティを参照する編集ボックス内を選択します。
    2. 稲妻アイコンを選択して、動的コンテンツ リストを開きます。
    3. 一覧の [JSON の 解析 ] セクションで、目的の JSON コンテンツ プロパティのデータ トークンを選択します。