次の方法で共有


Azure Functions における Azure SQL バインドの概要

この一連の記事では、Azure Functions で Azure SQL バインドを操作する方法について説明します。 Azure Functions では、Azure SQL および SQL Server 製品の入力バインディング、出力バインディング、関数トリガーがサポートされています。

アクション タイプ
SQL テーブルで変更が検出されたときに関数をトリガーする SQL トリガー
データベースからデータを読み取る 入力バインド
データベースにデータを保存する 出力バインド

拡張機能のインストール

インストールする拡張機能 NuGet パッケージは、関数アプリで使用している C# モードによって異なります。

関数は分離された C# ワーカー プロセスで実行されます。 詳しくは、「分離ワーカー プロセスにおける C# Azure Functions の実行のガイド」をご覧ください。

この NuGet パッケージをインストールすることによって、プロジェクトに拡張機能を追加します。

dotnet add package Microsoft.Azure.Functions.Worker.Extensions.Sql

Microsoft.Azure.Functions.Worker.Extensions.Sql パッケージのプレビュー バージョンを使用するには、コマンドに --prerelease フラグを追加します。 プレビュー機能は、 Azure Functions SQL 拡張機能のリリース ページで確認できます。

dotnet add package Microsoft.Azure.Functions.Worker.Extensions.Sql --prerelease

Azure Functions の Azure SQL バインドのプレビュー リリース間の破壊的変更には、同じデータベースを対象とするすべての Functions で同じバージョンの SQL 拡張機能パッケージが使用されている必要があります。

バンドルのインストール

アプリでこのバインド拡張機能を使用できるようにするには、プロジェクトのルートにある host.json ファイルに次の extensionBundle 参照が含まれていることを確認します。

{
    "version": "2.0",
    "extensionBundle": {
        "id": "Microsoft.Azure.Functions.ExtensionBundle",
        "version": "[4.0.0, 5.0.0)"
    }
}

この例では、version[4.0.0, 5.0.0)値は、少なくとも4.0.05.0.0未満のバンドル バージョン (4.x のすべての潜在的なバージョンを含む) を使用するように Functions ホストに指示します。 この表記は、v4.x 拡張機能バンドルの利用可能な最新のマイナー バージョンでアプリを効果的に維持します。

可能であれば、最新の拡張機能バンドルメジャー バージョンを使用し、ランタイムが最新のマイナー バージョンを自動的に維持できるようにする必要があります。 最新のバンドルの内容は、 拡張機能バンドルのリリース ページで確認できます。 詳細については、 Azure Functions 拡張機能バンドルに関するページを参照してください。

アプリでプレビュー機能を使用する必要がある場合は、代わりに最新バージョンのプレビュー バンドルを参照する必要があります。 詳細については、「 プレビュー拡張機能バンドルの操作」を参照してください。

プレビュー機能は、 Azure Functions SQL 拡張機能のリリース ページで確認できます。

Azure Functions の Azure SQL バインドのプレビュー リリース間の破壊的変更には、同じデータベースを対象とするすべての Functions で同じバージョンの SQL 拡張機能パッケージが使用されている必要があります。

パッケージの更新

次の例のように 、Azure Functions Java SQL Types パッケージ を、プロジェクト内の pom.xml ファイルに更新して関数プロジェクトに追加します。

<dependency>
    <groupId>com.microsoft.azure.functions</groupId>
    <artifactId>azure-functions-java-library-sql</artifactId>
    <version>2.1.0</version>
</dependency>

SQL 接続文字列

Azure Functions の Azure SQL バインドには、すべてのバインドとトリガーで接続文字列に必須のプロパティがあります。 これらでは、その接続文字列を Microsoft.Data.SqlClient ライブラリに渡し、SqlClient ConnectionString のドキュメントの定義に従ってその接続文字列をサポートします。

重要

最適なセキュリティを実現するために、Functions と Azure SQL Database の間の接続には、マネージド ID と共に Microsoft Entra ID を使用する必要があります。 マネージド ID は、接続文字列の資格情報、サーバー名、使用されているポートなど、アプリケーションのデプロイからシークレットを排除することで、アプリの安全性を高めます。 マネージド ID の使用方法については、このチュートリアルの「 マネージド ID と SQL バインドを使用して関数アプリを Azure SQL に接続する

注意が必要なキーワードは次のとおりです。

  • Authentication: 関数が Microsoft Entra ID とマネージド ID を使用して Azure SQL に接続できるようにします。 詳細については、「 マネージド ID と SQL バインドを使用して関数アプリを Azure SQL に接続するを参照してください。
  • Command timeout: 関数は、クエリを終了する前に、指定した時間 (秒単位) を待機できます (既定では 30 秒)
  • ConnectRetryCount: 関数が自動的に追加の再接続試行を行えるようにします。特に Azure SQL Database サーバーレス層に適用できます (既定値 1)
  • Pooling: 関数がデータベースへの接続を再利用できるようにします。これにより、パフォーマンスが向上します (既定の true)。 接続プールのその他の設定には、Connection LifetimeMax Pool SizeMin Pool Size があります。 ADO.NET のドキュメントで接続プールについて詳しく学ぶ

考慮事項

  • Azure SQL バインドでは、バージョン 4.x 以降の Functions ランタイムがサポートされます。
  • Azure SQL バインドのソース コードは、こちらの GitHub リポジトリにあります。
  • このバインドでは、Azure SQL または SQL Server データベースに接続する必要があります。
  • データ型 NTEXTTEXTIMAGE の列を持つテーブルに対する出力バインディングはサポートされておらず、データのアップサートは失敗します。 これらの型は将来のバージョンの SQL Server で削除され、この Azure Functions バインドで使用される OPENJSON 関数とは互換性がありません。
  • ユーザー名とパスワードの代わりに管理 ID を使用します。
  • アプリケーション設定を格納するには、 Azure キー値 を使用することを検討してください。

サンプル

Azure SQL バインド GitHub リポジトリで利用できる C#、Java、JavaScript、PowerShell、Python のサンプルに加えて、Azure のサンプルではさらに多くのものを利用できます。

次の手順