Microsoft. Data.Sql클라이언트 네임스페이스 및 호환성

네임스페이스에는 Microsoft.Data.SqlClient SQL Server 호환 데이터베이스를 위한 지원되는 .NET 데이터 제공자가 포함되어 있습니다. 이 프로그램은 System.Data.SqlClient의 포크로 시작되었으며, 익숙한 ADO.NET 프로그래밍 모델을 유지하면서도 .NET 런타임과는 별개로 새로운 SQL Server 기능을 제공합니다.

새로운 개발에 Microsoft.Data.SqlClient를 사용하십시오.

네임스페이스를 설치하고 가져오세요

NuGet 패키지 추가:

dotnet add package Microsoft.Data.SqlClient

네임스페이스를 가져오세요:

using Microsoft.Data.SqlClient;

대부분의 애플리케이션은 SqlParameter, SqlCommand, SqlDataReader, SqlTransaction, SqlConnection를 사용합니다. 전체 공개 표면은 Microsoft. Data.SqlClient API 참고 자료를 참조하세요.

ADO.NET와의 관계

ADO.NET는 .NET에 내장된 데이터 접근 모델입니다. 이는 System.Data.Common 네임스페이스에서 제공자와 독립적인 추상화를 정의하며, Microsoft.Data.SqlClient가 구체적인 구현을 제공합니다.

ADO.NET 추상화 SqlClient 타입 Purpose
DbConnection SqlConnection 하나의 데이터베이스에 논리적 연결을 엽니다.
DbCommand SqlCommand Transact-SQL(T-SQL) 텍스트 또는 저장 프로시저를 실행합니다.
DbParameter SqlParameter 명령어 텍스트와 별도로 타이핑된 값을 전송합니다.
DbDataReader SqlDataReader 서버로부터 결과 행을 순차적으로 전송합니다.
DbTransaction SqlTransaction 명령을 하나의 단위로 커밋되거나 롤백되는 하나의 트랜잭션으로 그룹화합니다.
DbDataAdapter SqlDataAdapter 연결이 끊긴 DataSet 및 DataTable 객체를 채우고 업데이트합니다.
DbBatch SqlBatch 지원되는 대상 프레임워크에 여러 명령을 하나의 배치로 전송합니다.

Microsoft. Data.SqlClient는 다음과 같은 SQL Server 전용 API도 제공합니다:

  • SqlBulkCopy
  • SqlConnectionStringBuilder
  • SqlConfigurableRetryFactory
  • SqlDependency
  • SQL Server 전용 인증, 암호화 및 데이터 타입 지원

라이브러리가 여러 데이터베이스 제공자를 지원해야 할 때 ADO.NET 추상화에 대응하여 프로그래밍합니다. 애플리케이션이 SQL Server를 대상으로 하며 Microsoft Entra 인증, 항상 암호화, 대량 복사, 테이블 값 매개변수, 또는 설정 가능한 재시도 로직과 같은 제공자 특화 기능이 필요할 때 SqlClient 유형을 사용하세요. 나머지 애플리케이션이 제공자 독립성을 유지해야 한다면, 제공자 전용 코드를 데이터 접근 경계 뒤에 두세요.

연결 및 연결 해제 액세스

연결형 액세스는 명령이 실행되는 동안과 애플리케이션이 결과를 읽는 동안 연결을 유지합니다. 일반적인 요청은 다음과 같은 순서를 따릅니다:

  1. 연결 문자열에서 a SqlConnection 를 만들고 열어보세요.
  2. SqlCommand을(를) 만들고 SqlParameter 값을 추가하세요.
  3. 명령을 실행합니다.
  4. 스칼라 값, 영향을 받은 행 수 또는 SqlDataReader를 처리합니다.
  5. 리더, 명령 및 연결을 해제하세요.

대부분의 웹 API, 서비스, 작업자, 명령줄 애플리케이션에 대해 연결된 접속 방식을 사용하세요. SqlDataReader 행을 스트리밍하며, 보통 전체 결과를 DataSet.에 로드하는 것보다 적은 메모리를 사용합니다.

비연결 액세스는 DataSet를 사용하여 데이터를 인메모리 DataTable 또는 SqlDataAdapter에 복사합니다. 애플리케이션은 메모리 내 데이터를 읽거나 변경하는 동안 연결을 종료한 후 다시 연결하여 업데이트를 제출할 수 있습니다. 데이터 바인딩, 인메모리 관계 및 제약 조건, 나중에 조정하는 오프라인 편집 내용, 또는 DataAdapters를 중심으로 구축된 기존 애플리케이션 등에 사용하세요. 새로운 요청 지향 서비스의 경우, SqlDataReader와 SqlCommand로 시작하세요.

객체 수명과 동시성

각 작업 단위마다 SqlConnection 개체를 열고 폐기하세요. 연결 풀링은 기본 물리적 연결을 재사용하므로, 애플리케이션의 수명 동안 하나의 글로벌 연결을 열어두지 마세요. 연결, 명령, 리더, 트랜잭션, 대량 복사 객체를 신속히 폐기하세요. 비동기 코드에서는 대상 프레임워크에서 SqlConnection를 구현하는 타입(.NET에서는 SqlDataReader 및 IDisposable 등)에 IAsyncDisposable를 사용하고, SqlBulkCopy만 구현하는 타입(예: await using)에는 일반 using를 사용합니다.

SqlConnection SqlCommand, , SqlDataReader, , SqlTransaction 그리고 여러 스레드의 동시 사용을 지원하지 않습니다. 각 동시 작업을 별도의 연결로 만들고 연결 풀링에 의존하세요. 다중 활성 결과 집합(MARS)은 연결에 여러 활성 결과 집합을 허용하지만, SqlClient 객체를 스레드 안전으로 만들지는 않습니다.

System.Data.SqlClient와의 관계

System.Data.SqlClient는 .NET Framework 및 초기 .NET 릴리스와 함께 제공되던 이전 공급자입니다. Microsoft.Data.SqlClient 많은 타입 이름을 사용하지만, 패키지, 네임스페이스, 기본값, 기능, 지원 정책이 다릅니다.

새 신청 코드에서 두 제공자를 모두 언급하지 마세요. 두 패키지에서 같은 이름을 가진 타입은 서로 바꿔 쓸 수 없습니다. 예를 들어, System.Data.SqlClient.SqlConnection은(는) Microsoft.Data.SqlClient.SqlConnection이(가) 필요한 곳에 전달할 수 없습니다.

마이그레이션은 보통 패키지를 Microsoft.Data.SqlClient 추가하고 네임스페이스 참조를 변경하는 것으로 시작하지만, 연결 암호화, 매개변수, 구성, 전이 의존성, 런타임 동작도 검토해야 합니다. 배포하기 전에 System.Data.SqlClient에서 Microsoft.Data.SqlClient로 마이그레이션을 따르세요.

버전 호환성

드라이버 패키지 버전은 애플리케이션의 .NET 버전과 데이터베이스 엔진 버전과는 독립적입니다. 세 가지 모두 확인해 보세요:

Component 확인할 내용
Microsoft.Data.SqlClient 릴리스 라인은 지원되며, 애플리케이션이 사용하는 기능을 포함하고 있습니다.
.NET 또는 .NET 프레임워크 애플리케이션은 해당 드라이버 릴리스에서 지원하는 런타임을 목표로 합니다.
SQL Server 호환 데이터베이스 드라이버 릴리스는 데이터베이스 버전을 지원하며, 서버는 TDS 8.0과 같은 요청된 모든 프로토콜 기능을 지원합니다.

현재 행렬에 대해서는 SqlClient 드라이버 지원 수명주기를 참조하세요.

버전별 변경 내용

드라이버 릴리스는 API를 추가하고, 선택적 의존성을 이동하며, 보안 기본값을 변경할 수 있습니다. 모든 소규모 또는 주요 업데이트 전에 변경 사항을 검토하세요.

예는 다음과 같습니다.

  • 버전 4.0에서는 true의 기본값이 Encrypt로 변경되었습니다.
  • 버전 5.0에서는 TDS 8.0용으로 SqlConnectionEncryptOption 및 Encrypt=Strict를 도입했습니다.
  • 버전 5.2에서는 지원되는 최신 .NET 대상에 SqlBatch를 도입했습니다.
  • 버전 7.0에서는 드라이버에서 제공하는 Microsoft Entra 인증을 Microsoft.Data.SqlClient.Extensions.Azure로 옮겼습니다.

릴리스 정보 링크와 업그레이드 요약은 Microsoft.Data.SqlClient의 새로운 기능을 참조하세요.

일부 기능은 메인 네임스페이스 외부의 타입이나 선택적 패키지를 사용합니다.

네임스페이스 또는 패키지 Purpose
Microsoft.Data.SqlClient.Server SqlDataRecord 및 SqlMetaData의 SqlClient 구현.
Microsoft.Data.SqlTypes sql클라이언트 전용 타입 SqlFileStream, SqlJson, , 와 SqlVector<T>같은 경우입니다.
Microsoft.Data.SqlClient.Diagnostics 강력하게 타입이 부여된 진단 이벤트 페이로드.
Microsoft.Data.SqlClient.Extensions.Azure 버전 7.0 이후 기준으로 드라이버 제공 Microsoft Entra 인증.
Microsoft.Data.SqlClient.AlwaysEncrypted.AzureKeyVaultProvider Always Encrypted용 Azure Key Vault 통합

네임스페이스만으로 패키지 요구사항을 추론하지 마세요. 사용 중인 드라이버 버전에 대한 특집 기사와 NuGet 패키지 의존성 정보를 따라가세요.