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 demaxPoolSize
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 aminPoolSize
.
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 recursominPoolSize
.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
, comoSnowflakeDbConnectionPool.SetTimeout
,SetPooling
ouSetMaxPoolSize
. Usar os settersSnowflakeDbConnectionPool
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, anteriormenteNONPROXYHOSTS=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, comoNONPROXYHOSTS=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 objetoSnowflakeDbCommand
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
porretryTimeout
no caso de um valorretryTimeout
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 umQueryID
para falhas de PUT/GET. Anteriormente, o driver retornava diferentes tipos de exceções, comoFileNotFound
eDirectoryNotFound
. Se seu aplicativo verificou alguma dessas exceções, você deverá atualizar seu código para lidar apenas comSnowflakeDbException
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
ouSFConfiguration.UseV2ChunkDownloader
. Se você usou comandos semelhantes aos seguintes, você deve removê-los:SFConfiguration.Instance().ChunkParserVersion = 1;
ouSFConfiguration.Instance().ChunkParserVersion = 2;
SFConfiguration.Instance().ChunkDownloaderVersion = 1;
ouSFConfiguration.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
porBouncyCastle.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 definindoallowUnderscoresInHost
portrue
. Você pode substituir esse comportamento definindoallowUnderscoresInHost=true
emConnectionString
.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.