Microsoft.Data.SqlClient 7.0.1의 출시를 알리게 되어 기쁩니다. 이는 7.0 버전 라인의 첫 번째 서비스 업데이트입니다. 이번 패치에서는 7.0.0 GA 출시 이후 커뮤니티에서 보고된 여러 호환성 수정 사항을 다룹니다.
NuGet에서 설치하거나 업데이트하세요:
dotnet add package Microsoft.Data.SqlClient --version 7.0.1
전체 릴리스 정보: 7.0.1 릴리스 정보
이번 릴리스의 주요 변경 사항
SQL Server 2016 및 Azure Synapse를 위한 SqlBulkCopy 수정 사항
이전 버전 또는 특수한 SQL Server 엔진에서 SqlBulkCopy에 영향을 미쳤던 두 가지 이슈를 해결했습니다.
- SQL Server 2016 호환성 — SQL Server 2017에서 도입된 열을 참조하는 열 메타데이터 쿼리 때문에
SqlBulkCopy작업이Invalid column name 'graph_type'오류와 함께 실패하는 문제가 있었습니다. 이제 해당 열이 없는 버전에서는graph_type참조가 컴파일되지 않도록 쿼리에 동적 SQL을 사용합니다. (#3714) - Azure Synapse 전용 SQL 풀 — 컬럼 목록 쿼리가 Synapse에서 지원하지 않는 변수 할당 패턴을 사용하고 있었습니다. 이제 드라이버가 Synapse(엔진 에디션 6)를 감지하면
STRING_AGG를 사용하며, SQL Server 2016과의 호환성을 위해 변수 할당 방식도 폴백(fallback)으로 유지합니다. (#4149)
벡터(Vector) 컬럼 유형 메타데이터
이전에는 벡터 float32 컬럼에 대해 SqlDataReader.GetFieldType() 및 GetProviderSpecificFieldType()이 typeof(SqlVector<float>) 대신 typeof(byte[])를 반환했습니다. 이제 이 메서드들은 GetValue()와 동일한 유형 결정 로직을 따르며 올바른 벡터 유형을 반환합니다. (#4104)
.NET Framework의 System.Data.Common 종속성 누락 문제
.NET Framework에 내장된 System.Data.Common 어셈블리는 IDbColumnSchemaGenerator와 같은 API가 추가되기 전의 버전입니다. NuGet 패키지 종속성이 명시되지 않아 Microsoft.Data.SqlClient를 통해 이러한 유형을 사용할 때 CS0012 컴파일 오류가 발생했습니다. 이제 .NET Framework 타겟을 위해 System.Data.Common v4.3.0에 대한 의존성을 패키지에 명시적으로 추가했습니다. (#4063)
User Agent TDS 확장 기능 상시 활성화
Switch.Microsoft.Data.SqlClient.EnableUserAgent AppContext 스위치가 제거되었습니다. 이제 드라이버는 로그인 프로세스 중에 항상 User Agent 정보를 전송합니다. (#4124)
분리된 Azure 인증 유형을 위한 유형 전달(Type forwards)
7.0.0 버전에서 Microsoft.Data.SqlClient.Extensions.Abstractions 패키지로 이동한 공개 유형들(SqlAuthenticationMethod, SqlAuthenticationParameters, SqlAuthenticationProvider, SqlAuthenticationProviderException, SqlAuthenticationToken)에 대해 코어 Microsoft.Data.SqlClient 어셈블리에 유형 전달(Type forwards)을 추가했습니다. 이를 통해 이전 버전의 Microsoft.Data.SqlClient를 기반으로 컴파일된 어셈블리와의 바이너리 호환성을 보장합니다. (#4067)
커뮤니티 기여
이번 릴리스의 SqlBulkCopy 수정 사항 두 건은 모두 커뮤니티 기여자 edwardneal 님의 주도로 이루어졌습니다.
- SQL Server 2016 수정 — Edward 님은 컬럼 메타데이터 쿼리를 동적 SQL로 재작성하여 해당 열이 없는 서버에서
graph_type참조가 컴파일되지 않도록 하는 원본 PR(#3719)을 작성했습니다. 이 수정 사항은 SQL Server 2016 및 2017에 대한 CI 파이프라인 테스트를 위해 내부 브랜치(#4092)에서 재현되었습니다. - Azure Synapse 수정 — Edward 님은 컬럼 목록을 생성할 때 사용하는 변수 할당 연결 패턴이 Azure Synapse 전용 SQL 풀에서 지원되지 않는 문제를 확인하고 수정(#4176)했습니다. 수정된 코드는
SERVERPROPERTY('EngineEdition')를 통해 Synapse를 감지하고STRING_AGG로 전환하며, SQL Server 2016을 위해 기존의 변수 할당 방식도 유지합니다. 또한 SQL Server 2016, SQL Server 2025, Azure Synapse 전용 SQL 풀에서 이 수정 사항을 직접 검증했습니다.
SqlClient에 대한 Edward 님의 지속적인 기여에 깊이 감사드립니다. 이와 같은 커뮤니티의 참여는 모든 SqlClient 사용자의 경험을 직접적으로 향상시킵니다.
시작하기
Microsoft.Data.SqlClient를 처음 사용하신다면 문서를 확인해 보세요. System.Data.SqlClient 사용자라면 포팅 가이드(Porting cheat sheet)를 참고하시기 바랍니다.
문제가 발생하면 GitHub 저장소에 제보해 주세요.