Notas de lançamento de .NET Driver para 2024

Este artigo contém as notas de versão do .NET Driver, incluindo o seguinte, quando aplicável:

  • Mudanças de comportamento

  • Novos recursos

  • Correções de bugs voltados para o cliente

Snowflake usa controle de versão semântico para atualizações de .NET Driver.

Consulte Driver .NET para ver a documentação.

Versão 4.1.0 (5 de agosto de 2024)

Novos recursos e melhorias

  • Adição de mensagens de log sobre o destino do domínio ao qual o driver está se conectando.

  • Atualização de DbCommand.Prepare() para não fazer nada em vez de lançar uma exceção.

Correções de bugs

  • Correção de um problema em que uma exceção de cancelamento era perdida ao cancelar uma operação OpenAsync.

Versão 4.0.0 (8 de julho de 2024)

Mudanças de BCR (versão da mudança de comportamento)

A partir da versão 4.0.0, o driver .NET introduziu as seguintes alterações significativas:

  • Alterações no comportamento do pool de conexões:

    • O driver agora usa pools separados para cada cadeia de caracteres de conexão exclusiva. Anteriormente, o driver usava apenas um pool para todas as cadeias de caracteres de conexão.

    • A mudança do parâmetro maxPoolSize:

      • Anteriormente, ele representava o número de conexões a serem armazenadas no pool. Agora ele define o número máximo de conexões permitidas para abrir para um determinado pool (para cada cadeia de caracteres de conexão exclusiva, há um pool diferente, então você pode defini-lo de forma diferente para cada um deles).

      • Se maxPoolSize for atingido, o thread que solicita uma nova conexão aguarda até que qualquer conexão do pool esteja disponível para reutilização sem exceder o limite. Uma exceção é lançada em caso de tempo limite.

      • Você pode configurar o tempo de espera na cadeia de caracteres de conexão configurando a propriedade waitingForIdleSessionTimeout. O valor padrão para o tempo limite é 30 segundos. Você pode alterá-lo para 0 para desabilitar a espera.

      • O valor padrão de maxPoolSize é 10. Certifique-se de que o valor de maxPoolSize esteja definido corretamente para suas necessidades para evitar o travamento de threads ou exceções de tempo limite.

      • A propriedade maxPoolSize deve ser maior ou igual a minPoolSize.

    • Adição de um novo parâmetro minPoolSize com um valor padrão de 2 que faz com que o driver abra duas conexões (a segunda em segundo plano) quando você abre a primeira conexão para uma determinada cadeia de caracteres de conexão. É possível definir esse valor como 0 na cadeia de caracteres de conexão se quiser desabilitar o recurso minPoolSize.

    • A configuração do pool foi alterada para uma abordagem baseada em cadeia de caracteres de conexão. Todas as propriedades que controlam o comportamento do pool de conexão agora podem ser passadas na cadeia de caracteres de conexão. Não é mais possível definir as propriedades do pool de conexão por setters SnowflakeDbConnectionPool, como SnowflakeDbConnectionPool.SetTimeout, SetPooling ou SetMaxPoolSize. Usar os setters SnowflakeDbConnectionPool agora gera exceções.

    • Anteriormente, as conexões que alteravam os parâmetros de banco de dados, esquema, função ou warehouse (por exemplo, executar o comando ALTER SESSION SET) eram agrupadas. O novo comportamento padrão para esses casos destrói conexões alteradas quando o fechamento não as retorna ao pool. Se quiser usar conexões alteradas no pool, é necessário adicionar ChangedSession=OriginalPool à sua cadeia de caracteres de conexão.

    • Conexões com autenticação de navegador externo ou, em alguns casos, autenticação de token KeyPair/JWT, não são mais armazenadas no pool por padrão. Para habilitar o pool dessas conexões, é necessário adicionar poolingEnabled=true à cadeia de caracteres de conexão. Para outros métodos de autenticação, o agrupamento é habilitado por padrão.

    • Para obter mais informações sobre como usar o pool de conexão, consulte Como usar pools de conexões.

  • Mudança de comportamento do parâmetro NONPOXYHOSTS:

    O comportamento do parâmetro NONPROXYHOSTS foi alterado. Anteriormente, um host não seria proxy se seu nome contivesse o valor especificado neste parâmetro. Agora o host não é proxy quando é exatamente o valor especificado no parâmetro. Por exemplo, anteriormente NONPROXYHOSTS=c corresponderia a qualquer host que contivesse «c», como «your-account.snowflakecomputing.com» também. Após a alteração, é necessário especificar o host inteiro, como NONPROXYHOSTS=your-account.snowflakecomputing.com, para que a conexão não passe pelo proxy.

Novos recursos e melhorias

  • Alteração do comportamento do pool de conexão com vários pools (um para cada cadeia de caracteres de conexão exclusiva) e configuração orientada por cadeia de caracteres de conexão. Para obter mais informações sobre como usar o pool de conexão, consulte Como usar pools de conexões.

  • .NET Standard 2.0 como destino

  • Adição de uma assinatura de nome forte ao conjunto do driver.

  • Adição da capacidade de definição do parâmetro QueryTag na cadeia de caracteres de conexão e no objeto SnowflakeDbCommand para marcar a conexão e as consultas de comando com uma tag.

  • Corrigimos a dependência BouncyCastle.Cryptography.

  • Corrigimos a dependência Google.Cloud.Storage.V1.

  • Introdução de um novo parâmetro DISABLE_SAML_URL_CHECK que desabilita a verificação do URL do postback SAML correspondente ao URL do host ao autenticar com o Okta.

Correções de bugs

  • Correção do tratamento de valores de data e hora passados com vinculações para consultas com uma quantidade muito grande de vinculações (maior que CLIENT_STAGE_ARRAY_BINDING_THRESHOLD).

  • Correção do envio de consultas SQL ao servidor enviando consultas originais em vez de consultas excluídas que resultavam em erros para consultas que terminavam com comentários.

  • Implementação de uma maneira mais confiável de fornecer hosts no parâmetro NONPROXYHOSTS.

  • Suporte corrigido para aspas duplas em parâmetros de cadeia de caracteres de conexão DB, SCHEMA, WAREHOUSE e ROLE.

  • Correção de clientes S3 adicionando «https://» ao ServiceUrl, caso estivesse faltando.

  • O detector de segredo foi atualizado para mascarar melhor os segredos ao fazer login.

  • Adição da configuração de um valor SnowflakeDbParameter.DbType adequado.

  • Correção da lógica de encurtamento de connectionTimeout por retryTimeout no caso de um valor retryTimeout infinito.

  • Aplicação da lógica de aumento de maxHttpRetries ao valor padrão para clientes HTTP. Anteriormente, ele era aplicado apenas à autenticação Okta.

Versão 3.1.0 (27 de março de 2024)

Novos recursos e melhorias

  • Adicionado suporte para execução de consultas assíncronas.

Correções de bugs

  • Exceções aprimoradas geradas pelo autenticador Okta.

  • Corrigido um problema com a validação de nomes de contas muito curtos (1-2 caracteres).

  • Foi corrigido um problema relacionado à recuperação da propriedade WAREHOUSE de uma cadeia de caracteres de conexão com conteúdo entre aspas, como "WAREHOUSE=\"two words\"".

Versão 3.0.0 (29 de fevereiro de 2024)

Mudanças de BCR (versão da mudança de comportamento)

  • Para aumentar a segurança, o driver não pesquisa mais um diretório temporário para configurações de registro fáceis. Além disso, o driver agora exige que o arquivo de configuração de log em sistemas estilo Unix limite as permissões de arquivo para permitir que apenas o proprietário do arquivo modifique os arquivos (como chmod 0600, chmod 0644).

  • O driver agora lança um SnowflakeDbException com um QueryID para falhas de PUT/GET. Anteriormente, o driver retornava diferentes tipos de exceções, como FileNotFound e DirectoryNotFound. Se seu aplicativo verificou alguma dessas exceções, você deverá atualizar seu código para lidar apenas com SnowflakeDbException para falhas PUT/GET.

  • O driver não oferece mais suporte a versões mais antigas, como V1 e V2, do analisador/baixador das partes. Como parte da atualização para a versão V3, o driver não oferece mais suporte às opções de configuração SFConfiguration.UseV2JsonParser ou SFConfiguration.UseV2ChunkDownloader. Se você usou comandos semelhantes aos seguintes, você deve removê-los:

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

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

    • SFConfiguration.Instance().UseV2JsonParser

    • SFConfiguration.Instance().UseV2ChunkDownloader

Novos recursos e melhorias

  • Adição de suporte para múltiplas integrações SAML.

Correções de bugs

  • Segurança aprimorada no recurso de registro fácil, incluindo:

    • Como usar uma maneira mais confiável de determinar qual diretório de driver usar ao procurar arquivos de configuração do cliente.

    • Não utiliza mais um diretório temporário para pesquisa de configuração.

    • Como aplicar verificações adicionais de permissões de arquivo no Unix para aumentar a segurança.

    • Como adicionar registros mais detalhados.

  • Foi corrigido um problema de nova tentativa do Okta para pontos de extremidade SSO/SAML.

  • Adicionada falha rápida para comandos sem execução de texto.

  • Corrigidas exceções lançadas de execuções com falha PUT/GET para conter QueryId, se possível.

  • Substituída a biblioteca Portable.BouncyCastle por BouncyCastle.Cryptography.

Versão 2.2.0 (17 de janeiro de 2024)

Mudanças de BCR (versão da mudança de comportamento)

  • A partir da versão 2.2.0, o driver .NET substitui automaticamente sublinhados (_) em nomes de contas por hífens (-) ao criar um nome de host com base em um nome de conta. Esta mudança afeta os clientes PrivateLink cujos nomes de conta contêm sublinhados. Nesta situação, você deve substituir o valor padrão definindo allowUnderscoresInHost por true. Você pode substituir esse comportamento definindo allowUnderscoresInHost=true em ConnectionString.

    Essa alteração foi feita para corrigir os erros de resolução DNS que ocorriam ao conectar-se pelo link público com contas Snowflake que tinham sublinhados em seus nomes de conta.

Novos recursos e atualizações

  • Desempenho aprimorado do Arrow.

  • Substitui automaticamente sublinhados (_) em nomes de contas por hífens (-) ao criar um nome de host com base em um nome de conta.

  • Adicionado um parâmetro de configuração allowUnderscoresInHost para permitir que sublinhados (_) em nomes de contas sejam mantidos no nome do host criado. Este parâmetro permite substituir a alteração de comportamento associada a esta versão.

Correções de bugs

  • Para corrigir um problema com tempos limite de conexão, o driver agora fecha sessões expiradas de forma assíncrona durante a conexão.