2024년 .NET Driver 릴리스 정보

이 문서에는 .NET Driver 에 대한 릴리스 정보가 있는데, 해당되는 경우 다음을 포함합니다.

  • 동작 변경 사항

  • 새로운 기능

  • 고객이 직면한 버그 수정

Snowflake는 .NET Driver 업데이트에 의미 체계 버전 관리를 사용합니다.

설명서는 .NET 드라이버 섹션을 참조하십시오.

버전 4.1.0(2024년 8월 5일)

새로운 기능 및 개선 사항

  • 드라이버가 연결 중인 도메인 대상에 대한 로그 메시지를 추가했습니다.

  • :codenowrap:`DbCommand.Prepare()`를 업데이트하여 예외를 발생시키는 대신 아무것도 하지 않도록 했습니다.

버그 수정 사항

  • OpenAsync 작업을 취소할 때 취소 예외가 손실되는 문제를 해결했습니다.

버전 4.0.0(2024년 7월 8일)

BCR(동작 변경 릴리스) 변경 사항

버전 4.0.0부터 .NET 드라이버에는 다음과 같은 중요한 변경 사항이 도입되었습니다.

  • 연결 풀 동작 변경 사항:

    • 이제 이 드라이버는 각각의 고유 연결 문자열에 대해 별개의 풀을 사용합니다. 이전에는 이 드라이버가 모든 연결 문자열에 풀을 하나만 사용했습니다.

    • maxPoolSize 매개 변수 변경 사항:

      • 이전에는 이 매개 변수가 풀에 저장할 연결 수를 나타냈습니다. 현재는 주어진 풀에 대해 열 수 있는 최대 연결 수를 정의합니다(각 고유 연결 문자열마다 다른 풀이 있으므로 각각에 대해 다르게 설정할 수 있음).

      • maxPoolSize 에 도달하면 새로운 연결을 요청하는 스레드가 제한을 초과하지 않고 풀에서 연결을 재사용할 수 있게 될 때까지 기다립니다. 시간 초과가 발생하면 예외가 발생합니다.

      • waitingForIdleSessionTimeout 속성을 설정하여 연결 문자열에서 대기 시간을 구성할 수 있습니다. 시간 초과 기본값은 30초입니다. 0으로 변경하면 대기 기능을 비활성화할 수 있습니다.

      • maxPoolSize 의 기본값은 10입니다. 스레드 중단 또는 시간 초과 예외를 방지하기 위해 maxPoolSize 값이 필요에 맞게 적절히 설정되었는지 확인합니다.

      • maxPoolSize 속성은 minPoolSize 보다 크거나 같아야 합니다.

    • 특정 연결 문자열에 대해 첫 번째 연결을 열 때 드라이버가 2개의 연결(두 번째 연결은 백그라운드에서 수행됨)을 열도록 하는 기본값 2의 새로운 minPoolSize 매개 변수를 추가했습니다. minPoolSize 기능을 비활성화하려면 연결 문자열에서 이 값을 0으로 설정할 수 있습니다.

    • 풀 구성이 연결 문자열 기반 접근 방식으로 변경되었습니다. 연결 풀 동작을 제어하는 모든 속성을 이제 연결 문자열에 전달할 수 있습니다. SnowflakeDbConnectionPool.SetTimeout, SetPooling 또는 SetMaxPoolSize 와 같은 SnowflakeDbConnectionPool setter로 연결 풀 속성을 설정하는 것은 더 이상 가능하지 않습니다. 이제는 SnowflakeDbConnectionPool setter를 사용하면 예외가 발생합니다.

    • 이전에는 (예: ALTER SESSION SET 명령을 실행하여) 데이터베이스, 스키마, 역할 또는 웨어하우스 매개 변수를 변경하는 연결이 풀링되었습니다. 이러한 경우에 대한 새로운 기본 동작은 변경된 연결을 닫아도 풀로 반환되지 않을 때 해당 연결을 제거하는 것입니다. 풀에서 변경된 연결을 사용하려면 연결 문자열에 ChangedSession=OriginalPool 을 추가해야 합니다.

    • 외부 브라우저 인증을 통한 연결이나 일부 KeyPair/JWT 토큰 인증은 기본적으로 풀에 더 이상 저장되지 않습니다. 이러한 연결 풀링을 활성화하려면 연결 문자열에 poolingEnabled=true 를 추가해야 합니다. 다른 인증 방법의 경우 풀링이 기본적으로 활성화되어 있습니다.

    • 연결 풀 사용에 대한 자세한 내용은 연결 풀 사용하기 섹션을 참조하십시오.

  • NONPOXYHOSTS 매개 변수 동작 변경 사항:

    NONPROXYHOSTS 매개 변수의 동작이 변경되었습니다. 이전에는 호스트 이름에 이 매개 변수에 지정된 값이 포함된 경우 호스트가 프록시되지 않았습니다. 이제 호스트는 이 매개 변수에 지정된 값과 정확히 일치할 경우 프록시되지 않습니다. 예를 들어, 이전에는 NONPROXYHOSTS=c 가 “your-account.snowflakecomputing.com”과 같이 “c”를 포함하는 모든 호스트와도 일치했습니다. 변경 후에는 :codenowrap:`NONPROXYHOSTS=your-account.snowflakecomputing.com`과 같이 전체 호스트를 지정해야 프록시가 적용되지 않습니다.

새로운 기능 및 개선 사항

  • 여러 풀(고유한 연결 문자열당 하나씩)과 연결 문자열 기반 구성을 사용하여 연결 풀 동작을 변경했습니다. 연결 풀 사용에 대한 자세한 내용은 연결 풀 사용하기 섹션을 참조하십시오.

  • .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 연결 문자열 매개 변수에서 큰따옴표 지원을 수정했습니다.

  • ServiceUrl 에 “https://”가 없는 경우 이를 추가하여 S3 클라이언트를 수정했습니다.

  • 로그에 기록할 때 시크릿을 더 효과적으로 마스킹하기 위해 시크릿 감지기를 업데이트했습니다.

  • 적절한 SnowflakeDbParameter.DbType 값 설정을 추가했습니다.

  • retryTimeout 값이 무한한 경우 connectionTimeoutretryTimeout 만큼 단축하는 논리를 수정했습니다.

  • maxHttpRetries 를 HTTP 클라이언트의 기본값으로 늘리는 논리를 적용했습니다. 이전에는 Okta 인증에만 이 논리가 적용되었습니다.

버전 3.1.0(2024년 3월 27일)

새로운 기능 및 개선 사항

  • 비동기 쿼리 실행에 대한 지원이 추가되었습니다.

버그 수정 사항

  • Okta 인증자에서 발생하는 예외가 개선되었습니다.

  • 매우 짧은(1~2자) 계정 이름의 유효성 검사 문제를 수정했습니다.

  • "WAREHOUSE=\"two words\"" 와 같이 따옴표로 묶인 콘텐츠가 포함된 연결 문자열에서 WAREHOUSE 속성을 검색하는 것과 관련된 문제를 수정했습니다.

버전 3.0.0(2024년 2월 29일)

BCR(동작 변경 릴리스) 변경 사항

  • 보안을 강화하기 위해 드라이버는 더 이상 쉬운 로깅 구성을 위해 임시 디렉터리를 검색하지 않습니다. 또한 이제 드라이버에는 파일 소유자만 파일을 수정할 수 있도록 파일 권한을 제한하기 위해 Unix 스타일 시스템의 로깅 구성 파일이 필요합니다(예: chmod 0600, chmod 0644).

  • 이제 드라이버는 PUT/GET 실패에 대해 QueryID 와 함께 SnowflakeDbException 을 발생시킵니다. 이전에는 드라이버가 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 재시도 문제를 수정했습니다.

  • 텍스트 실행이 없는 명령에 대한 빠른 실패를 추가했습니다.

  • 가능한 경우 QueryId 를 포함하도록 PUT/GET 실행 실패로 인해 발생한 예외를 수정했습니다.

  • Portable.BouncyCastle 라이브러리를 BouncyCastle.Cryptography 로 바꾸었습니다.

버전 2.2.0(2024년 1월 17일)

BCR(동작 변경 릴리스) 변경 사항

  • 버전 2.2.0부터 .NET 드라이버는 계정 이름을 기반으로 호스트 이름을 구성할 때 계정 이름의 밑줄(_)을 하이픈(-)으로 자동으로 바꿉니다. 이 변경 사항은 계정 이름에 밑줄이 포함된 PrivateLink 고객에게 영향을 미칩니다. 이 상황에서는 allowUnderscoresInHosttrue 로 설정하여 기본값을 재정의해야 합니다. ConnectionString 에서 allowUnderscoresInHost=true 를 설정하여 이 동작을 재정의할 수 있습니다.

    이 변경은 계정 이름에 밑줄이 있는 Snowflake 계정과 공개 링크를 통해 연결할 때 발생하는 DNS 해결 오류를 수정하기 위해 이루어졌습니다.

새로운 기능과 업데이트

  • 향상된 Arrow 성능.

  • 계정 이름을 기반으로 호스트 이름을 구성할 때 계정 이름의 밑줄(_)을 하이픈(-)으로 자동으로 바꿉니다.

  • 구성된 호스트 이름에서 계정 이름의 밑줄(_)을 유지할 수 있도록 허용하는 allowUnderscoresInHost 구성 매개 변수를 추가했습니다. 이 매개 변수를 사용하면 이 릴리스와 관련된 동작 변경 사항을 재정의할 수 있습니다.

버그 수정 사항

  • 연결 시간 초과 문제를 수정하기 위해 이제 드라이버는 연결 시 만료된 세션을 비동기적으로 닫습니다.