2024年の .NET Driver リリースノート

この記事には、 .NET Driver のリリースノートが含まれています。また、該当する場合は以下が含まれます。

  • 動作の変更

  • 新機能

  • 顧客向けバグ修正

Snowflake は、 .NET Driver の更新にセマンティックバージョニングを使用します。

ドキュメントについては、 NET ドライバー をご参照ください。

バージョン4.1.0(2024年8月5日)

新機能および改善

  • ドライバーの接続先ドメインに関するログメッセージを追加しました。

  • DbCommand.Prepare() を更新し、例外をスローする代わりに何もしないようになりました。

バグ修正

  • OpenAsync の操作をキャンセルする際にキャンセル例外が失われる問題を修正しました。

バージョン4.0.0(2024年7月8日)

BCR (動作変更リリース)の変更

バージョン4.0.0以降、.NET ドライバーにより以下の変更が導入されました。

  • 接続プールの動作変更:

    • ドライバーは、一意の接続文字列ごとに別々のプールを使用するようになりました。これまで、ドライバーはすべての接続文字列に対して1つのプールしか使用しませんでした。

    • maxPoolSize パラメーターの変更:

      • これまでは、プールに保存する接続数を表していました。今後は、指定されたプールに対して開くことのできる接続の最大数を定義します(一意の接続文字列ごとに異なるプールが存在するため、それぞれ異なる設定にすることができます)。

      • maxPoolSize に達した場合、新しい接続をリクエストするスレッドは、プールからの接続が制限を超えることなく再利用可能になるまで待機します。タイムアウトの場合は例外がスローされます。

      • waitingForIdleSessionTimeout プロパティを設定して、接続文字列の待機時間を構成することができます。タイムアウトのデフォルト値は30秒です。これを0に変更すると、待機時間を無効にできます。

      • maxPoolSize のデフォルト値は10です。スレッドのハングやタイムアウト例外を避けるために、 maxPoolSize の値がニーズに合わせて適切に設定されていることを確認してください。

      • maxPoolSize プロパティは、 minPoolSize 以上にする必要があります。

    • 指定された接続文字列に対して最初の接続を開いたときに、ドライバーが2つの接続(2つ目はバックグラウンドで)を開くようにする、デフォルト値が2の新しい minPoolSize パラメーターを追加しました。 minPoolSize 機能を無効にする場合は、接続文字列でこの値を0に設定できます。

    • プールの構成は、接続文字列主導のアプローチに変更されました。接続プールの動作を制御するすべてのプロパティを接続文字列で渡せるようになりました。SnowflakeDbConnectionPool.SetTimeoutSetPoolingSetMaxPoolSize のように、 SnowflakeDbConnectionPool のセッターで接続プールのプロパティを設定することはできなくなりました。SnowflakeDbConnectionPool セッターを使用すると例外がスローされるようになりました。

    • これまで、データベース、スキーマ、ロール、またはウェアハウスのパラメーターを変更する(例: ALTER SESSION SET コマンドを実行することによって)接続はプールされていました。新しいデフォルトの動作では、このような場合、閉じる時に変更された接続を破棄し、プールには戻しません。プール内で変更された接続を使用する場合は、接続文字列に ChangedSession=OriginalPool を追加する必要があります。

    • 外部ブラウザー認証や、 KeyPair/JWT トークン認証による接続は、デフォルトではプールに保存されなくなりました。このような接続のプーリングを有効にするには、接続文字列に poolingEnabled=true を追加する必要があります。他の認証方式では、プーリングはデフォルトで有効になっています。

    • 接続プールの使用に関する詳細については、 接続プールの使用 をご参照ください。

  • NONPOXYHOSTS パラメーターの動作変更:

    NONPROXYHOSTS パラメーターの動作が変更されました。これまで、ホストの名前にこのパラメーターで指定された値が含まれている場合、ホストはプロキシになりませんでした。今後、ホストがパラメーターで指定された値とまったく同一の場合に、プロキシになりません。たとえば、以前は NONPROXYHOSTS=c は、「your-account.snowflakecomputing.com」のような「c」を含むホストにもマッチしました。変更後は、 NONPROXYHOSTS=your-account.snowflakecomputing.com のように、ホスト全体を指定して、プロキシにならないようにする必要があります。

新機能および改善

  • 複数の接続プール(一意の接続文字列ごとに1つ)と接続文字列駆動型の構成による接続プールの動作を変更しました。接続プールの使用に関する詳細については、 接続プールの使用 をご参照ください。

  • .netstandard 2.0をターゲットにします。

  • ドライバーアセンブリに強力な名前署名を追加しました。

  • 接続文字列と SnowflakeDbCommand オブジェクトに QueryTag パラメーターを設定し、接続とコマンドのクエリにタグを付ける機能を追加しました。

  • BouncyCastle.Cryptography の依存関係を変更しました。

  • Google.Cloud.Storage.V1 の依存関係を変更しました。

  • Oktaで認証する際に、 SAML ポストバック URL がホスト URL と一致するかどうかのチェックを無効にする新しいパラメーター DISABLE_SAML_URL_CHECK を導入しました。

バグ修正

  • バインドが非常に多い(CLIENT_STAGE_ARRAY_BINDING_THRESHOLD 以上)クエリで、バインドと一緒に渡される日付と時刻の値の処理を修正しました。

  • SQL クエリをサーバーに送信する際、トリミングされたクエリではなく元のクエリを送信するために、コメントで終わるクエリでエラーが発生する問題を修正しました。

  • NONPROXYHOSTS パラメーターでホストを提供する、より信頼性の高い方法を実装しました。

  • DB、 SCHEMA、 WAREHOUSE、 ROLE 接続文字列パラメーターの二重引用符のサポートを修正しました。

  • https://」がない場合、これを ServiceUrl に追加するようにS3クライアントを修正しました。

  • シークレットディテクターを更新し、ログ時にシークレットをより適切にマスクできるようにしました。

  • SnowflakeDbParameter.DbType の適切な値の設定を追加しました。

  • retryTimeout 値が無限の場合、 retryTimeout によって connectionTimeout を短縮するロジックを修正しました。

  • HTTP クライアントのデフォルト値に maxHttpRetries を増やすロジックを適用しました。従来、これはOkta認証にのみ適用されていました。

バージョン3.1.0(2024年3月27日)

新機能および改善

  • 非同期クエリの実行のサポートを追加しました。

バグ修正

  • Okta認証方式からスローされる例外を改善しました。

  • 非常に短い(1~2文字)アカウント名の検証に関する問題を修正しました。

  • "WAREHOUSE=\"two words\"" のような引用符で囲まれた内容の接続文字列から WAREHOUSE プロパティを取得する際の問題を修正しました。

バージョン3.0.0(2024年2月29日)

BCR (動作変更リリース)の変更

  • セキュリティを強化するため、ドライバーは、簡単なログ構成用の仮ディレクトリを検索しなくなりました。さらに、ドライバーには、ファイル所有者のみがファイルを変更できるようにファイル権限を制限するため、Unixスタイルのシステム上のログ構成ファイルが必要になりました(chmod 0600chmod 0644 など)。

  • ドライバーは PUT/GET の失敗に対して SnowflakeDbExceptionQueryID をスローするようになりました。以前、ドライバーは FileNotFoundDirectoryNotFound といった異なるタイプの例外をスローしていました。アプリケーションがこれらの例外を確認した場合は、 PUT/GET の失敗に対して SnowflakeDbException のみを処理するようにコードを更新する必要があります。

  • ドライバーは、チャンクパーサー/ダウンローダーのV1やV2のような古いバージョンをサポートしなくなりました。バージョンV3へのアップグレードの一環として、ドライバーは SFConfiguration.UseV2JsonParser または SFConfiguration.UseV2ChunkDownloader 構成オプションをサポートしなくなりました。以下のようなコマンドを使用していた場合は、削除する必要があります。

    • SFConfiguration.Instance().ChunkParserVersion = 1; または SFConfiguration.Instance().ChunkParserVersion = 2;

    • SFConfiguration.Instance().ChunkDownloaderVersion = 1; または SFConfiguration.Instance().ChunkDownloaderVersion = 2;

    • SFConfiguration.Instance().UseV2JsonParser

    • SFConfiguration.Instance().UseV2ChunkDownloader

新機能および改善

  • 複数の SAML 統合のサポートを追加しました。

バグ修正

  • 簡単なログ機能におけるセキュリティの向上には次が含まれます。

    • クライアント構成ファイルを検索する際に、どのドライバーディレクトリを使用するかを決定する、より信頼性の高い方法を使用する。

    • 構成検索に仮ディレクトリの使用をしなくなった。

    • セキュリティ強化のため、Unixで追加のファイル権限チェックを実施。

    • より詳細なログを追加。

  • SSO/SAML エンドポイント用Okta再試行の問題を修正。

  • テキスト実行を伴わないコマンドのフェールファストを追加。

  • PUT/GET の実行失敗時にスローされる例外に QueryId が含まれるように修正(可能な場合)。

  • Portable.BouncyCastle ライブラリを BouncyCastle.Cryptography に置き換えました。

バージョン2.2.0(2024年1月17日)

BCR (動作変更リリース)の変更

  • バージョン 2.2.0 以降、.NET ドライバーはアカウント名に基づいてホスト名を構築する際に、アカウント名のアンダースコア(_)をハイフン(-)に自動的に置き換えます。この変更は、アカウント名にアンダースコアが含まれる PrivateLink のお客様に影響します。この場合、 allowUnderscoresInHosttrue に設定してデフォルト値を上書きする必要があります。 ConnectionStringallowUnderscoresInHost=true を設定して、この動作を上書きできます。

    この変更は、アカウント名にアンダースコアを含むSnowflakeアカウントでパブリックリンクを介して接続した場合に発生した、 DNS 解決エラーを修正するためのものです。

新機能および更新

  • Arrowパフォーマンスの改善

  • アカウント名に基づいてホスト名を作成する際に、アカウント名のアンダースコア(_)をハイフン(-)に自動的に置き換えます。

  • allowUnderscoresInHost 構成パラメーターを追加し、アカウント名のアンダースコア(_)を構築ホスト名で維持できるようにしました。このパラメーターを使用すると、本リリースに関連する動作変更を上書きできます。

バグ修正

  • 接続タイムアウトの問題を修正するため、接続時にドライバーが期限切れセッションを非同期に閉じるようになりました。