다음을 통해 공유


Sqlclient의 AppContext 스위치

ADO.NET 다운로드

AppContext 클래스를 통해 SqlClient는 이전 동작에 의존하는 호출자를 계속 지원하면서 새 기능을 제공할 수 있습니다. 사용자는 특정 AppContext 스위치를 설정하여 동작 변경을 옵트아웃할 수 있습니다.

운영 체제 암호화 프로토콜 강제 사용

적용 대상: .NET Framework .NET .NET Standard

Microsoft.Data.SqlClient 4.0부터 TLS 1.3은 드라이버에서 지원되지 않으며 기본적으로 지원되는 프로토콜 목록에서 제거되었습니다. 사용자는 AppContext 전환 "Switch.Microsoft.Data.SqlClient.UseSystemDefaultSecureProtocols"를 true로 설정하여 운영 체제의 클라이언트 프로토콜 강제 사용으로 다시 전환할 수 있습니다.

AppContext.SetSwitch("Switch.Microsoft.Data.SqlClient.UseSystemDefaultSecureProtocols", true);

버전 5.0부터 TLS 1.3은 위의 스위치를 사용하지 않고도 TDS 8 연결에서 지원됩니다. TDS 8은 EncryptStrict으로 설정된 경우 활성화됩니다.

소수점 잘라내기 동작 사용

적용 대상: .NET Framework .NET .NET Standard

Microsoft.Data.SqlClient 2.0부터 decimal 데이터는 SQL Server에서 반올림되는 것처럼 기본적으로 반올림됩니다. 이전 잘라내기 동작을 사용하도록 설정하려면 애플리케이션 시작 시 AppContext 스위치 "Switch.Microsoft.Data.SqlClient.TruncateScaledDecimal"true로 설정하면 됩니다.

AppContext.SetSwitch("Switch.Microsoft.Data.SqlClient.TruncateScaledDecimal", true);

Windows에서 관리 네트워킹 사용

적용 대상: 지원되지 않습니다. .NET Framework .NET Core .NET Standard

(버전 2.0부터 사용 가능)

Windows에서 SqlClient는 기본적으로 SNI 네트워크 인터페이스의 네이티브 구현을 사용합니다. 관리 SNI 구현을 사용하도록 설정하려면 애플리케이션 시작 시 AppContext 스위치 "Switch.Microsoft.Data.SqlClient.UseManagedNetworkingOnWindows"true로 설정하면 됩니다.

AppContext.SetSwitch("Switch.Microsoft.Data.SqlClient.UseManagedNetworkingOnWindows", true);

이 스위치는 Windows의 .NET Core 2.1 이상 및 .NET Standard 2.0 이상 프로젝트에서 관리 네트워킹 구현을 사용하도록 드라이버의 동작을 토글하여 Microsoft.Data.SqlClient 라이브러리의 네이티브 라이브러리에 대한 모든 종속성을 제거합니다. 테스트 및 디버깅용으로만 사용됩니다.

참고 항목

네이티브 구현과 비교했을 때 몇 가지 알려진 차이점이 있습니다. 예를 들어 관리 구현은 비도메인 Windows 인증을 지원하지 않습니다.

투명 네트워크 IP 확인 사용 안 함

적용 대상: .NET Framework 지원되지 않습니다. .NET Core 지원되지 않습니다. .NET Standard

TNIR(투명 네트워크 IP 확인)은 기존 MultiSubnetFailover 기능의 수정 버전입니다. TNIR은 호스트 이름의 첫 번째 확인된 IP가 응답하지 않고 호스트 이름과 연결된 여러 IP가 있는 경우 드라이버의 연결 시퀀스에 영향을 미칩니다. TNIR은 MultiSubnetFailover와 상호 작용하여 다음 세 가지 연결 시퀀스를 제공합니다.

  • 0: 하나의 IP가 시도된 후 모든 IP가 병렬로 시도됩니다.
  • 1: 모든 IP가 병렬로 시도됩니다.
  • 2: 모든 IP가 하나씩 시도됩니다.
TransparentNetworkIPResolution MultiSubnetFailover 동작
True True 1
거짓 0
False True 1
False False 2

TransparentNetworkIPResolution은 기본적으로 사용하도록 설정됩니다. MultiSubnetFailover는 기본적으로 사용하지 않도록 설정됩니다. TNIR을 사용하지 않도록 설정하려면 애플리케이션 시작 시 AppContext 스위치 "Switch.Microsoft.Data.SqlClient.DisableTNIRByDefaultInConnectionString"true로 설정하면 됩니다.

AppContext.SetSwitch("Switch.Microsoft.Data.SqlClient.DisableTNIRByDefaultInConnectionString", true);

이러한 속성 설정에 대한 자세한 내용은 SqlConnection.ConnectionString 속성 설명서를 참조하세요.

로그인 중 최소 시간 제한 사용

적용 대상: .NET Framework .NET .NET Standard

로그인 시도가 무기한 대기하지 않도록 하려면 애플리케이션 시작 시 AppContext 스위치 Switch.Microsoft.Data.SqlClient.UseOneSecFloorInTimeoutCalculationDuringLogintrue로 설정하면 됩니다.

AppContext.SetSwitch("Switch.Microsoft.Data.SqlClient.UseOneSecFloorInTimeoutCalculationDuringLogin", false);

ReadAsync 차단 동작 사용 안 함

적용 대상: .NET Framework .NET .NET Standard

버전 3.0부터 ReadAsync는 비동기적으로 실행됩니다. 이전 버전은 ReadAsync를 동기적으로 실행하고 .NET Framework에서 호출 스레드를 차단합니다. 이 차단 동작을 제어하려면 애플리케이션 시작 시 AppContext 스위치 Switch.Microsoft.Data.SqlClient.MakeReadAsyncBlockingtrue 또는 false로 설정하면 됩니다.

AppContext.SetSwitch("Switch.Microsoft.Data.SqlClient.MakeReadAsyncBlocking", false);

구성 가능한 다시 시도 논리 사용

적용 대상: .NET Framework .NET .NET Standard

(버전 3.0부터 사용 가능)

기본적으로 구성 가능한 다시 시도 논리는 사용하지 않도록 설정되어 있습니다. 이 기능을 사용하도록 설정하려면 애플리케이션 시작 시 AppContext 스위치 Switch.Microsoft.Data.SqlClient.EnableRetryLogictrue로 설정합니다. 다시 시도 공급자가 연결 또는 명령에 할당된 경우에도 이 스위치가 필요합니다.

AppContext.SetSwitch("Switch.Microsoft.Data.SqlClient.EnableRetryLogic", true);
  • 구성 파일을 사용하여 스위치를 사용하도록 설정하는 방법에 대한 자세한 내용은 안전 스위치 사용을 참조하세요.

참고 항목

Microsoft.Data.SqlClient v4.0부터 구성 가능한 다시 시도 논리 기능을 사용하기 위해 앱 컨텍스트 전환 "Switch.Microsoft.Data.SqlClient.EnableRetryLogic"이 더 이상 필요하지 않습니다. 이 기능은 이제 프로덕션에서 지원됩니다. 이 기능의 기본 동작은 계속해서 비시도 정책으로 유지되며 재시도를 사용하도록 설정하려면 클라이언트 애플리케이션에서 이 정책을 재정의해야 합니다.

rowversion null 동작 사용

적용 대상: .NET Framework .NET .NET Standard

버전 3.0부터 rowversion의 값이 null 이면 SqlDataReader는 빈 byte[] 값 대신 DBNull 값을 반환합니다. 빈 byte[]를 반환하는 레거시 동작을 사용하도록 설정하려면 애플리케이션 시작 시 AppContext 스위치 Switch.Microsoft.Data.SqlClient.LegacyRowVersionNullBehavior를 사용하도록 설정합니다.

AppContext.SetSwitch("Switch.Microsoft.Data.SqlClient.LegacyRowVersionNullBehavior", true);

안전하지 않은 TLS 경고 표시 안 함

적용 대상: .NET Framework .NET .NET Standard

(버전 4.0.1부터 사용 가능)

연결 문자열에서 Encrypt=false를 사용할 때 TLS 버전이 1.2 이하인 경우 콘솔에 보안 경고가 출력됩니다. 애플리케이션 시작 시 다음 AppContext 스위치를 사용하도록 설정하여 이 경고를 표시하지 않을 수 있습니다.

AppContext.SetSwitch("Switch.Microsoft.Data.SqlClient.SuppressInsecureTLSWarning", true);

참고 항목

AppContext 클래스