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 のマネージド コネクタ |
Standard | シングルテナント 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;
Azure portal でこの文字列を探すには、データベースを開きます。
データベース メニューで、[プロパティ] の下の [接続文字列] を選択します。
オンプレミスの 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 で既に作成されているデータ ゲートウェイ リソースが必要です。
Standard ワークフロー
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 拡張機能を使用すれば、次のツールでロジック アプリ ワークフローを作成することもできます。
- 従量課金ワークフロー: Visual Studio Code
- Standard ワークフロー: Visual Studio Code
Azure portal で、従量課金ロジック アプリと空のワークフローをデザイナーで開きます。
デザイナーで、検索ボックスの下の [Standard] を選択します。 続いて、次の一般的な手順に従って、必要な SQL Server マネージド トリガーを追加します。
この例では、[項目が作成されたとき] という名前のトリガーを使用します。
求められた場合は、接続に関する情報を入力します。 完了したら [作成] を選択します。
トリガー情報ボックスが表示されたら、選んだトリガーで必要になる必須情報を入力します。
この例では、項目が作成されたときという名前のトリガーで、SQL サーバー名とデータベース名の値をこれまでに入力していなかった場合はこれらの値を入力します。 そうでない場合は、[テーブル名] の一覧から使用するテーブルを選択します。 [頻度] と [間隔] を選択して、トリガーで新しい項目を確認するスケジュールを設定します。
このトリガーで他のプロパティを使用できる場合は、[新しいパラメーターの追加] リストを開き、シナリオに関連したプロパティを選択します。
このトリガーでは、選択したテーブルから 1 行のみが返され、それ以外には何も返されません。 他のタスクを実行するには、ロジック アプリ ワークフローで必要な次のタスクを実行する SQL Server コネクタ アクションまたは別のアクションを追加して続行します。
たとえば、この行のデータを表示するには、返された行のフィールドを含むファイルを作成する他のアクションを追加し、電子メール通知を送信します。 このコネクタで使用できるその他のアクションの詳細については、SQL Server マネージド コネクタのリファレンスを参照してください。
完了したら、ワークフローを保存します。 デザイナーのツール バーで、 [保存] を選択します。
ワークフローを保存すると、この手順により、デプロイされたロジック アプリ (Azure に公開されている) に更新プログラムが自動的に発行されます。 トリガーだけでは、ワークフローは指定されたスケジュールに基づいて SQL データベースをチェックするだけです。 トリガーに応答するアクションを追加する必要があります。
SQL Server アクションを追加する
次に示す手順では Azure portal を使用しますが、適切な Azure Logic Apps 拡張機能を使用すれば、次のツールでロジック アプリ ワークフローをビルドすることもできます。
- 従量課金ワークフロー: Visual Studio Code
- Standard ワークフロー: Visual Studio Code
この例では、ロジック アプリ ワークフローが繰り返しトリガーで起動され、SQL データベースから 1 行を取得するアクションを呼び出します。
Azure portal で、従量課金ロジック アプリとワークフローをデザイナーで開きます。
デザイナーで、次の一般的な手順に従って、必要な SQL Server マネージド アクションを追加します。
この例では、1 つのレコードを取得する行を取得という名前のアクションを使用して進めます。
求められた場合は、接続に関する情報を入力します。 完了したら [作成] を選択します。
アクション情報ボックスが表示されたら、[テーブル名] リストから、使用するテーブルを選択します。 [行 ID] プロパティに、目的のレコードの ID を入力します。
この例の場合、テーブル名は SalesLT.Customer です。
このアクションでは、選択したテーブルから 1 行のみが返され、それ以外は何も行われません。 この行のデータを表示するには、他のアクションを追加します。 たとえば、そのようなアクションで、返される行のフィールドが含まれるファイルを作成し、そのファイルをクラウド ストレージ アカウントに格納します。 このコネクタで使用できるその他のアクションの詳細については、コネクタのリファレンス ページを参照してください。
完了したら、ワークフローを保存します。 デザイナーのツール バーで、 [保存] を選択します。
データベースに接続する
サービスまたはシステムに接続するトリガーまたはアクションを追加しており、既存またはアクティブな接続がない場合、Azure Logic Apps には、接続の種類によって異なる接続情報を提供するように求めるプロンプトが表示されます。次に例を示します。
- アカウントの資格情報
- 接続に使う名前
- サーバーまたはシステムの名前
- 使用する認証の種類
- 接続の文字列
この情報を入力したら、ターゲット データベースに基づいて次の手順に進みます。
Azure SQL Database または SQL Managed Instance に接続する
オンプレミス データ ゲートウェイを使用せずに SQL Managed Instance にアクセスするには、SQL Managed Instance にパブリック エンドポイントを設定する必要があります。 パブリック エンドポイントによってポート 3342 が使用されるので、ロジック アプリからの接続を作成するときに、このポート番号を必ず指定します。
接続情報ボックスで、次の手順を実行します。
[接続名] に、接続に使用する名前を入力します。
[認証の種類] で、Azure SQL Database または SQL Managed Instance のデータベースで必要であり、かつ有効になっている認証を選択します。
認証 説明 接続文字列 - SQL Server 組み込みコネクタを使用する Standard ワークフローでのみサポートされます。
- SQL サーバーとデータベースに接続文字列が必要になります。Active Directory OAuth - SQL Server 組み込みコネクタを使用する Standard ワークフローでのみサポートされます。 詳しくは、次のドキュメントをご覧ください。
- SQL Server コネクタの認証
- Microsoft Entra ID を使用して Open Authorization を有効にする (Microsoft Entra ID OAuth)
- Microsoft Entra ID を使用した OAuthLogic Apps マネージド ID - SQL Server マネージド コネクタでサポートされます。 Standard ワークフローでは、この認証の種類は SQL Server 組み込みコネクタで使用できますが、代わりにオプションの名前がマネージド ID になります。
- 以下の項目が必要です。
--- ロジック アプリ リソースで有効になっていて、かつデータベースにアクセスできる有効なマネージド ID。
--- SQL Server リソースに対する SQL DB 共同作成者ロールのアクセス権
--- SQL Server リソースが含まれているリソース グループに対する共同作成者のアクセス権。
詳しくは、次のドキュメントをご覧ください。
- SQL Server コネクタのマネージド ID 認証
- SQL - サーバー レベルのロールサービス プリンシパル (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 統合認証を選択する場合の接続情報ボックスの表示方法を示しています。
従量課金ワークフロー
Standard ワークフロー
[Microsoft Entra 統合] を選択した後、[サインイン] を選択します。 Azure SQL Database または SQL Managed Instance のどちらを使用するかに基づいて、認証用のユーザー資格情報を選択します。
データベースに対して次の値を選択します。
プロパティ Required 説明 サーバー名 はい 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;
既定では、システム データベース内のテーブルはフィルターで除外されるため、システム データベースを選択したときに自動的に表示されない場合があります。 別の方法として、データベース一覧から [カスタム値の入力] を選択した後、テーブル名を手動で入力することもできます。
このデータベース情報ボックスの例を次に示します。
従量課金ワークフロー
Standard ワークフロー
次に、「SQL トリガーを追加する」または「SQL アクションを追加する」でまだ完了していない手順を続行します。
オンプレミスの SQL Server に接続する
接続情報ボックスで、次の手順を実行します。
オンプレミスのデータ ゲートウェイを必要とするオンプレミスの SQL Server への接続の場合は、これらの前提条件が満たされていることを確認します。
そうでないと、接続を作成するときに、[接続ゲートウェイ] の一覧にお使いのデータ ゲートウェイ リソースが表示されません。
[認証の種類] では、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 認証に関する記事を参照してください。SQL データベースに関する次の値を選択または指定します。
プロパティ Required 説明 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 認証を選択した場合の接続情報ボックスの表示方法を示しています。
従量課金ワークフロー
Standard ワークフロー
準備ができたら、 [作成] を選択します。
次に、「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 Database で Azure エラスティック ジョブ エージェントを使用できます。 オンプレミスの SQL Server と SQL Managed Instance では、SQL Server エージェントを使用できます。 詳しくは、Azure Logic Apps の SQL Server コネクタで長時間実行されるストアド プロシージャのタイムアウトの処理に関するページをご覧ください。
動的な一括データを処理する
SQL Server コネクタを使用してストアド プロシージャを呼び出すと、返される出力が動的になることがあります。 このシナリオでは、次の手順を実行します。
Azure portal で、ロジック アプリとワークフローをデザイナーで開きます。
テスト実行を行って、出力形式を表示します。 サンプル出力をコピーして保存します。
デザイナーで、ストアド プロシージャを呼び出すアクションの下に、Parse JSON という名前の組み込みアクションを追加します。
[JSON の解析] アクションで、[サンプルのペイロードを使用してスキーマを生成する] を選択します。
[サンプルの JSON ペイロードを入力するか、貼り付けます] ボックスにサンプル出力を貼り付けて、[完了] を選択します。
Note
Azure Logic Apps がスキーマを生成できないというエラーが発生する場合は、サンプル出力の構文が正しい形式であることを確認してください。 それでもスキーマを生成できない場合は、[スキーマ] ボックスにスキーマを手入力します。
完了したら、ワークフローを保存します。
JSON コンテンツのプロパティを参照するには、それらのプロパティを参照する編集ボックス内を選択して、動的コンテンツの一覧を表示します。 一覧の [JSON の解析] の見出しの下で、目的の JSON コンテンツ プロパティのデータ トークンを選択します。