.NET Driver-Versionshinweise 2024

Dieser Artikel enthält die Versionshinweise für .NET Driver, einschließlich der folgenden, sofern zutreffend:

  • Verhaltensänderungen

  • Neue Features

  • Fehlerkorrekturen für Kunden

Snowflake verwendet semantische Versionierung für .NET Driver-Aktualisierungen.

Siehe .NET-Treiber für die Dokumentation.

Version 4.1.0 (5. August 2024)

Neue Features und Verbesserungen

  • Protokollmeldungen über das Domänenziel, zu dem der Treiber eine Verbindung herstellt, wurden hinzugefügt.

  • Aktualisiert DbCommand. Prepare() tut nichts, anstatt eine Ausnahme auszulösen.

Fehlerkorrekturen

  • Es wurde ein Problem behoben, bei dem eine Ausnahme beim Abbrechen einer OpenAsync-Operation verloren ging.

Version 4.0.0 (8. Juli 2024)

Änderungen in Verhaltensänderungs-Release (BCR)

Ab Version 4.0.0 wurden mit dem .NET-Treiber die folgenden Änderungen eingeführt:

  • Änderungen in der Verhaltensweise des Verbindungspools:

    • Der Treiber verwendet nun separate Pools für jede eindeutige Verbindungszeichenfolge. Zuvor verwendete der Treiber nur einen Pool für alle Verbindungszeichenfolgen.

    • Der Parameter maxPoolSize ändert sich:

      • Zuvor war es die Anzahl der Verbindungen, die im Pool gespeichert werden sollte. Nun wird die maximale Anzahl der Verbindungen definiert, die für einen bestimmten Pool geöffnet werden dürfen (für jede eindeutige Verbindungszeichenfolge gibt es einen anderen Pool, sodass Sie die Einstellung für jeden von ihnen anders vornehmen können).

      • Wenn maxPoolSize erreicht ist, wartet der Thread, der eine neue Verbindung anfragt, bis eine beliebige Verbindung aus dem Pool zur Wiederverwendung verfügbar ist, ohne die Beschränkung zu überschreiten. Im Falle eines Timeouts wird eine Ausnahme ausgelöst.

      • Sie können die Wartezeit in der Verbindungszeichenfolge konfigurieren, indem Sie die Eigenschaft waitingForIdleSessionTimeout einstellen. Der Standardwert für das Timeout beträgt 30 Sekunden. Sie können den Wert auf 0 ändern, um das Warten zu deaktivieren.

      • Der Standardwert für maxPoolSize ist 10. Vergewissern Sie sich, dass der maxPoolSize-Wert für Ihre Bedürfnisse richtig eingestellt ist, damit Ihre Threads nicht hängen bleiben oder Timeout-Ausnahmen auftreten.

      • Die Eigenschaft maxPoolSize sollte größer oder gleich minPoolSize sein.

    • Es wurde der neue Parameter minPoolSize mit einem Standardwert von 2 hinzugefügt, der den Treiber veranlasst, zwei Verbindungen zu öffnen (die zweite im Hintergrund), wenn Sie die erste Verbindung für eine bestimmte Verbindungszeichenfolge öffnen. Sie können diesen Wert in der Verbindungszeichenfolge auf 0 setzen, wenn Sie die minPoolSize-Funktion deaktivieren möchten.

    • Die Konfiguration des Pools wurde auf einen von der Zeichenfolge abhängigen Ansatz umgestellt. Alle Eigenschaften, die die Verhaltensweise des Verbindungspools steuern, können nun in der Verbindungszeichenfolge übergeben werden. Es ist nicht mehr möglich, Eigenschaften des Verbindungspools über SnowflakeDbConnectionPool-Setter einzustellen, wie SnowflakeDbConnectionPool.SetTimeout, SetPooling oder SetMaxPoolSize. Die Verwendung von SnowflakeDbConnectionPool-Setters löst nun Ausnahmen aus.

    • Zuvor wurden Verbindungen, die die Parameter für Datenbank, Schema, Rolle oder Warehouse (z. B. durch Ausführung des Befehls ALTER SESSION SET) änderten, zusammengelegt. Die neue standardmäßige Verhaltensweise für solche Fälle zerstört geänderte Verbindungen, wenn sie beim Schließen nicht in den Pool zurückkehren. Wenn Sie geänderte Verbindungen im Pool verwenden möchten, müssen Sie ChangedSession=OriginalPool zu Ihrer Verbindungszeichenfolge hinzufügen.

    • Verbindungen mit externer Authentifizierung über Browser oder in einigen Fällen über KeyPair/JWT-Token-Authentifizierung werden standardmäßig nicht mehr im Pool gespeichert. Um das Pooling solcher Verbindungen zu aktivieren, müssen Sie poolingEnabled=true der Verbindungszeichenfolge hinzufügen. Bei anderen Authentifizierungsmethoden ist das Pooling standardmäßig aktiviert.

    • Weitere Informationen zur Verwendung von Verbindungspools finden Sie unter Verwenden von Verbindungspools.

  • Änderung der Verhaltensweise des Parameters NONPOXYHOSTS:

    Die Verhaltensweise des Parameters NONPROXYHOSTS hat sich geändert. Früher wurde ein Host nicht projiziert, wenn sein Name den in diesem Parameter angegebenen Wert enthielt. Nun wird der Host nicht mehr proxyiert, wenn er genau dem im Parameter angegebenen Wert entspricht. Zuvor würde NONPROXYHOSTS=c zum Beispiel mit jedem Host übereinstimmen, der „c“ enthält, also auch mit „ihr-konto.snowflakecomputing.com“. Nach der Änderung müssen Sie den gesamten Host angeben, z. B. NONPROXYHOSTS=Ihr-Konto.snowflakecomputing.com, damit er nicht projiziert wird.

Neue Features und Verbesserungen

  • Geänderte Verhaltensweise des Verbindungspools mit mehreren Pools (einer für jede eindeutige Zeichenfolge) und einer von der Verbindungszeichenfolge abhängigen Konfiguration. Weitere Informationen zur Verwendung von Verbindungspools finden Sie unter Verwenden von Verbindungspools.

  • Ziel ist .netstandard 2.0.

  • Der Treiber-Assembly wurde eine starke Namenssignatur hinzugefügt.

  • Es wurde die Möglichkeit hinzugefügt, den Parameter QueryTag in der Verbindungszeichenfolge und für das Objekt SnowflakeDbCommand einzustellen, um die Abfragen der Verbindung und des Befehls mit einem Tag zu kennzeichnen.

  • Die Abhängigkeit von BouncyCastle.Cryptography wurde erhöht.

  • Die Abhängigkeit von Google.Cloud.Storage.V1 wurde erhöht.

  • Es wurde der neue Parameter DISABLE_SAML_URL_CHECK eingeführt, der bei der Authentifizierung mit Okta die Überprüfung deaktiviert, ob die SAML postback-URL mit der Host-URL übereinstimmt.

Fehlerkorrekturen

  • Die Behandlung von mit Bindungen übergebenen Datums- und Zeitwerten bei Abfragen mit einer sehr großen Anzahl von Bindungen (mehr als CLIENT_STAGE_ARRAY_BINDING_THRESHOLD) wurde korrigiert.

  • Es wurde korrigiert, dass SQL Abfragen an den Server sendet, wobei die Originalabfragen anstelle der beschnittenen Abfragen gesendet wurden, was zu Fehlern bei Abfragen führte, die mit Kommentaren endeten.

  • Implementierung einer zuverlässigeren Methode zur Bereitstellung von Hosts im Parameter NONPROXYHOSTS.

  • Korrektur der Unterstützung von doppelten Anführungszeichen in den Parametern für die Verbindungszeichenfolgen DB, SCHEMA, WAREHOUSE, ROLE.

  • Korrektur der S3-Clients durch Hinzufügen von „https://“ zu ServiceUrl, falls es fehlt.

  • Die Geheimniserkennung wurde aktualisiert, um Geheimnisse beim Protokollieren besser zu maskieren.

  • Die Einstellung eines korrekten SnowflakeDbParameter.DbType-Wertes wurde hinzugefügt.

  • Korrektur der Logik zum Kürzen von connectionTimeout durch retryTimeout im Falle eines unendlichen retryTimeout-Wertes.

  • Die Logik zum Erhöhen von maxHttpRetries wurde auf den Standardwert für HTTP-Clients angewendet. Zuvor wurde es nur auf die Okta-Authentifizierung angewendet.

Version 3.1.0 (27. März 2024)

Neue Features und Verbesserungen

  • Unterstützung für das Ausführen asynchroner Abfragen wurde hinzugefügt.

Fehlerkorrekturen

  • Verbesserte Ausnahmen, die vom Okta-Authentifikator ausgelöst werden.

  • Problem mit der Validierung sehr kurzer (1-2 Zeichen) Kontonamen wurde behoben.

  • Problem behoben, das mit dem Abrufen der Eigenschaft WAREHOUSE aus einer Verbindungszeichenfolge mit Inhalt in Anführungszeichen, wie z. B. "WAREHOUSE=\"two words\"", zusammenhing.

Version 3.0.0 (29. Februar 2024)

Änderungen in Verhaltensänderungs-Release (BCR)

  • Zur Erhöhung der Sicherheit durchsucht der Treiber bei einfachen Protokollierungskonfigurationen nicht mehr ein temporäres Verzeichnis. Außerdem verlangt der Treiber nun, dass die Konfigurationsdatei für die Protokollierung auf Unix-Systemen die Dateiberechtigungen so einschränkt, dass nur der Eigentümer der Datei die Dateien ändern kann (z. B. chmod 0600, chmod 0644).

  • Der Treiber löst nun eine SnowflakeDbException-Ausnahme mit einer QueryID für PUT/GET-Fehler aus. Zuvor gab der Treiber unterschiedliche Typen von Ausnahmen zurück, z. B. FileNotFound und DirectoryNotFound. Wenn Ihre Anwendung auf eine dieser Ausnahmen geprüft hat, müssen Sie Ihren Code aktualisieren, um für PUT/GET-Fehler nur SnowflakeDbException zu behandeln.

  • Der Treiber unterstützt keine älteren Versionen, wie V1 und V2, des Block-Parsers/Downloaders mehr. Als Teil des Upgrades auf Version V3 unterstützt der Treiber nicht mehr die Konfigurationsoptionen SFConfiguration.UseV2JsonParser und SFConfiguration.UseV2ChunkDownloader. Wenn Sie ähnliche Befehle wie die folgenden verwendet haben, müssen Sie diese entfernen:

    • SFConfiguration.Instance().ChunkParserVersion = 1; oder SFConfiguration.Instance().ChunkParserVersion = 2;

    • SFConfiguration.Instance().ChunkDownloaderVersion = 1; oder SFConfiguration.Instance().ChunkDownloaderVersion = 2;

    • SFConfiguration.Instance().UseV2JsonParser

    • SFConfiguration.Instance().UseV2ChunkDownloader

Neue Features und Verbesserungen

  • Unterstützung für mehrere SAML-Integrationen wurde hinzugefügt.

Fehlerkorrekturen

  • Verbesserte Sicherheit beim einfachen Protokollierungs-Feature:

    • Verwendung einer zuverlässigeren Methode zur Bestimmung des zu verwendenden Treiberverzeichnisses bei der Suche nach Client-Konfigurationsdateien.

    • Es wird kein temporäres Verzeichnis mehr für die Konfigurationssuche verwendet.

    • Erzwingen zusätzlicher Dateiberechtigungsprüfungen unter Unix für mehr Sicherheit.

    • Hinzufügen einer ausführlicheren Protokollierung.

  • Okta-Wiederholungsproblem für SSO/SAML-Endpunkte wurde behoben.

  • Fail-Fast bei Befehlen ohne Textausführung hinzugefügt.

  • Ausnahmen, die von fehlgeschlagenen PUT/GET-Ausführungen ausgelöst werden, enthalten nun QueryId, wenn möglich.

  • Bibliothek Portable.BouncyCastle durch BouncyCastle.Cryptography ersetzt.

Version 2.2.0 (17. Januar 2024)

Änderungen in Verhaltensänderungs-Release (BCR)

  • Ab Version 2.2.0 ersetzt der .NET-Treiber beim Konstruieren von Hostnamen auf Grundlage eines Kontonamens automatisch Unterstriche (_) im Kontonamen durch Bindestriche (-). Diese Änderung hat Auswirkungen für PrivateLink-Kunden, deren Kontonamen Unterstriche enthalten. In diesem Fall müssen Sie den Standardwert überschreiben, indem Sie allowUnderscoresInHost auf true setzen. Sie können dieses Verhalten überschreiben, indem Sie allowUnderscoresInHost=true in ConnectionString festlegen.

    Diese Änderung wurde vorgenommen, um die DNS-Auflösungsfehler zu beheben, die bei der Verbindung über den öffentlichen Link mit Snowflake-Konten auftraten, deren Kontonamen Unterstriche enthielten.

Neue Features und Aktualisierungen

  • Verbesserte Arrow-Abfrageleistung.

  • Ersetzt beim Konstruieren von Hostnamen auf Grundlage eines Kontonamens automatisch Unterstriche (_) im Kontonamen durch Bindestriche (-).

  • Konfigurationsparameter allowUnderscoresInHost hinzugefügt, damit Unterstriche (_) in Kontonamen im konstruierten Hostnamen beibehalten werden können. Mit diesem Parameter können Sie die mit diesem Release verbundene Verhaltensänderung außer Kraft setzen.

Fehlerkorrekturen

  • Um ein Problem mit Verbindungs-Timeouts zu beheben, schließt der Treiber beim Herstellen von Verbindungen jetzt asynchron abgelaufene Sitzungen.