다음을 통해 공유


SqlClient의 AppContext 스위치

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

ADO.NET 다운로드

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

소수점 잘라내기 동작 사용

적용 대상: .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; .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

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

  • 0: 하나의 IP가 시도된 후 모든 IP가 병렬로 시도됩니다.
  • 1: 모든 IP가 병렬로 시도됩니다.
  • 2: 모든 IP가 하나씩 시도됩니다.
TransparentNetworkIPResolution MultiSubnetFailover 동작
True True 1
True 거짓 0
거짓 True 1
거짓 거짓 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);

rowversion null 동작 사용

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

버전 3.0부터 rowversion의 값이 null 이면 SqlDataReader는 빈 DBNull 값 대신 byte[] 값을 반환합니다. 빈 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);

서버 제공 장애 조치 파트너 무시

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

(버전 5.1.8, 6.0.4 및 6.1.3부터 사용 가능)

장애 조치 시 서버에서 제공하는 장애 조치(failover) 파트너 정보는 연결 문자열에 제공된 장애 조치(failover) 파트너 정보보다 선호됩니다. 서버에서 제공하는 장애 조치(failover) 파트너 정보를 무시하고 연결 문자열에 제공된 장애 조치(failover) 파트너 정보만 고려하려면 애플리케이션 시작 시 이 AppContext 스위치를 사용하도록 설정합니다.

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

참고 항목

AppContext 클래스