Windows 기반 Microsoft ODBC Driver for SQL Server의 기능
Windows의 Microsoft ODBC Driver 18.0 for SQL Server
ODBC Driver 18.0을 사용하면 키워드 LongAsMax
를 사용하여 긴 데이터 형식을 최대 데이터 형식으로 보내 설정을 설정/해제할 수 있습니다. 사용하도록 설정하면 SQL 형식 SQL_LONGVARCHAR, SQL_LONGVARBINARY 및 SQL_LONGWVARCHAR이 각각 텍스트, 이미지 및 ntext 대신 varchar(max), varbinary(max) 및 nvarchar(max)로 전송됩니다.
연결 암호화 기본값이 변경되었습니다. 이제 Encrypt의 기본값은 예이며, 새 키워드 Optional 및 Mandatory 키워드는 각각 아니요 및 예의 동의어로 도입되었습니다. TDS 8.0 프로토콜을 사용하여 연결하기 위해 Strict 모드 (Encrypt=Strict
) 가 추가되었습니다. 이 모드에서는 서버 인증서가 항상 확인됩니다(TrustServerCertificate
무시됨). 새 키워드 HostnameInCertificate
는 지정된 서버와 다른 경우 인증서에 있는 예상 호스트 이름을 지정하는 데 사용할 수 있습니다. HostnameInCertificate
는 모든 암호화 모드에서 사용할 수 있고 서버 쪽 Force Encryption
옵션을 사용하도록 설정한 경우에도 적용되며, TrustServerCertificate
를 사용하여 사용 안 함으로 설정하지 않은 한 드라이버가 Optional 또는 Mandatory 모드로 인증서를 확인하게 됩니다.
ODBC 드라이버 18에는 SQLGetData 확장이 포함됩니다. 사용하도록 설정하면 SQLGetData를 사용하여 뒤로 이동하는 것을 포함하여 행 내의 모든 순서로 열 데이터를 검색할 수 있습니다. 이 기능은 호환성을 위해 제공되며 성능이 크게 저하되고 메모리 사용량이 증가합니다. 애플리케이션은 항상 오름차순으로 열에 액세스하는 것이 좋습니다. SQLGetData 확장을 사용하도록 설정하려면 GetDataExtensions
연결 문자열 특성을 사용하거나 SQLSetConnectAttr
함수를 SQL_COPT_SS_GETDATA_EXTENSIONS
에서 SQL_EN_ON
으로 설정합니다.
Windows ARM64에 대한 지원은 ODBC 드라이버 18.2부터 포함되며 현재 프리뷰 버전입니다. ARM64 드라이버는 64비트 ARM64 애플리케이션용이며 32비트 ARM 또는 x86/amd64 에뮬레이션 드라이버는 포함되지 않습니다.
Windows의 Microsoft ODBC Driver 17.4 for SQL Server
ODBC 드라이버 17.4에는 TCP 연결 유지 설정을 조정하는 기능이 포함되어 있습니다. 드라이버 또는 DSN 레지스트리 키에 값을 추가하여 수정할 수 있습니다. 키는 시스템 데이터 원본의 경우 HKEY_LOCAL_MACHINE\Software\ODBC\
에 있고, 사용자 데이터 원본의 경우 HKEY_CURRENT_USER\Software\ODBC\
에 있습니다. DSN의 경우 ...\Software\ODBC\ODBC.INI\<DSN Name>
에 값을 추가하고, 드라이버의 경우 ...\Software\ODBC\ODBCINST.INI\ODBC Driver 17 for SQL Server
에 값을 추가해야 합니다.
자세한 내용은 ODBC 구성 요소에 대한 레지스트리 항목을 참조하세요.
값은REG_SZ
이며 다음과 같습니다.
KeepAlive
는 연결을 유지하기 위해 TCP에서 연결 유지 패킷을 보내는 빈도를 제어합니다. 기본값은 30초입니다.KeepAliveInterval
은 응답이 수신될 때까지 연결 유지 재전송을 구분하는 간격을 결정합니다. 기본값은 1초입니다.
Windows 기반 Microsoft ODBC Driver 13.1 for SQL Server
ODBC Driver 13.1 for SQL Server에는 이전 버전(11)의 모든 기능이 포함되어 있습니다. 또한 Microsoft Entra ID(이전 Azure Active Directory)를 사용하여 Always Encrypted 및 인증에 대한 지원을 추가합니다.
상시 암호화를 사용하면 클라이언트가 클라이언트 애플리케이션의 중요한 데이터를 암호화하고 암호화 키를 SQL Server에 표시하지 않을 수 있습니다. 클라이언트 컴퓨터에 설치된 Always Encrypted 지원 드라이버는 SQL Server 클라이언트 애플리케이션에서 중요한 데이터를 자동으로 암호화하고 암호 해독하여 보안을 향상합니다. 드라이버는 중요한 열의 데이터를 암호화한 후에 SQL Server에 데이터를 전달합니다. 또한 애플리케이션에 대한 의미 체계가 유지되도록 쿼리를 자동으로 다시 작성합니다. 마찬가지로, 드라이버는 쿼리 결과에 포함된 암호화된 데이터베이스 열에 저장된 데이터를 투명하게 해독합니다. 자세한 내용은 ODBC 드라이버와 함께 Always Encrypted 사용을 참조하세요.
Microsoft Entra ID를 사용하면 사용자, DBA 및 애플리케이션 프로그래머가 Microsoft Entra 인증을 사용할 수 있습니다. 자세한 내용은 ODBC 드라이버와 함께 Microsoft Entra ID 사용 및 Microsoft Entra 인증을 사용하여 Azure SQL 또는 Azure Synapse Analytics에 연결을 참조하세요.
Windows 기반 Microsoft ODBC Driver 11 for SQL Server
ODBC Driver for SQL Server에는 SQL Server 2012(11.x)에서 제공되는 SQL Server Native Client ODBC 드라이버의 모든 기능이 포함되어 있습니다. SQL Server Native Client에 대한 자세한 내용은 SQL Server Native Client 프로그래밍을 참조하세요. SQL Server Native Client ODBC 드라이버는 Windows 운영 체제에서 제공되는 ODBC 드라이버를 기반으로 합니다. 해당 드라이버에 대한 자세한 내용은 Windows Data Access Components SDK를 참조하세요.
이 ODBC Driver for SQL Server 릴리스에는 다음과 같은 새로운 기능이 포함되어 있습니다.
로그인 제한 시간을 지정하기 위한 bcp.exe -l 옵션
-l 옵션을 사용하여 서버에 연결을 시도할 때 SQL Server에 대한 bcp.exe
로그인 제한 시간(초)을 지정합니다. 기본 로그인 제한 시간은 15초입니다. 로그인 제한 시간은 0에서 65534 사이의 숫자여야 합니다. 입력한 값이 숫자가 아니거나 이 범위에 속하지 않을 경우 bcp.exe
에서는 오류 메시지를 생성합니다. 값 0은 무한 시간 제한을 지정합니다. 약 10초 미만의 로그인 시간 제한은 안정적이지 않습니다.
드라이버 인식 연결 풀링
ODBC Driver for SQL Server는 드라이버 인식 연결 풀링을 지원합니다. 자세한 내용은 ODBC Driver for SQL Server에서 드라이버 인식 연결 풀링 | Microsoft Docs을 참조하세요.
비동기 실행(알림 메서드)
ODBC Driver for SQL Server는 비동기 실행(알림 메서드)을 지원합니다. 사용 샘플은 비동기 실행(알림 방법) 샘플을 참조하세요.
연결 복원력
애플리케이션이 Microsoft Azure SQL Database로의 연결을 유지할 수 있도록 Windows의 ODBC 드라이버는 유휴 연결을 복원할 수 있습니다. 자세한 내용은 Windows ODBC 드라이버의 연결 복원을 참조하세요.
동작 변경
SQL Server Native Client에서 -y0
에 sqlcmd.exe
옵션을 지정하면 표시 너비가 0인 경우 출력이 1MB로 잘렸습니다.
SQL Server용 ODBC 드라이버 11부터 -y0
가 지정된 경우 단일 열에서 검색할 수 있는 데이터의 양에 제한이 없습니다. 이제 sqlcmd.exe
가 2GB 정도(SQL Server 데이터 형식 최대값)의 열을 스트림합니다.
또 다른 차이점은 -h
및 -y0
모두를 모두 지정하면 옵션이 호환되지 않는다는 오류 메시지가 표시된다는 점입니다. 열 제목 사이에 인쇄할 행 수를 지정하고 -y0
과 호환된 적 없었던 -h
는 무시되었지만 헤더는 인쇄되지 않았습니다.
-y0
은 반환되는 데이터의 크기에 따라 서버와 네트워크 모두에서 성능 문제를 유발할 수 있습니다.