MDAC에서 SQL Server Native Client로 애플리케이션 업데이트
적용 대상: SQL Server Azure SQL 데이터베이스 Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System(PDW)
Important
SNAC(SQL Server Native Client)는 다음과 함께 제공되지 않습니다.
- SQL Server 2022(16.x) 이상 버전
- SQL Server Management Studio 19 이상 버전
SQL Server Native Client(SQLNCLI 또는 SQLNCLI11)와 레거시 Microsoft OLE DB Provider for SQL Server(SQLOLEDB)는 새로운 응용 프로그램 개발에 권장되지 않습니다.
새 프로젝트의 경우 다음 드라이버 중 하나를 사용합니다.
SQL Server 데이터베이스 엔진(버전 2012부터 2019까지)의 구성 요소로 제공되는 SQLNCLI의 경우 이 수명 주기 예외 지원을 참조하세요.
SQL Server Native Client와 MDAC(Microsoft Data Access Components) 간에는 여러 가지 차이점이 있습니다. Windows Vista부터 데이터 액세스 구성 요소를 이제 Windows 데이터 액세스 구성 요소 또는 Windows DAC라고 합니다. 둘 다 SQL Server 데이터베이스에 대한 네이티브 데이터 액세스를 제공하지만 SQL Server Native Client는 이전 버전과의 호환성을 유지하면서 SQL Server 2005(9.x)의 새로운 기능을 노출하도록 특별히 설계되었습니다.
이 항목의 정보는 MDAC(또는 Windows DAC) 애플리케이션을 SQL Server 2005(9.x)에 포함된 SQL Server Native Client 버전으로 최신 상태로 업데이트하는 데 도움이 됩니다. SQL Server에 제공된 SQL Server Native Client 버전에서 이 애플리케이션을 최신 상태로 만들려면 SQL Server 2005 Native Client에서 애플리케이션 업데이트를 참조 하세요.
참고 항목
SQL Server Native Client가 SQL Server 2022(16.x)에서 제거되었습니다.
또한 MDAC에는 OLE DB, ODBC 및 ADO(ActiveX Data Objects) 사용을 위한 구성 요소가 포함되어 있지만 SQL Server Native Client는 OLE DB 및 ODBC만 구현합니다(ADO는 SQL Server Native Client의 기능에 액세스할 수 있음).
SQL Server Native Client 및 MDAC는 다른 영역과 다릅니다.
ADO를 사용하여 SQL Server Native Client 공급자에 액세스하는 사용자는 SQL OLE DB 공급자에 액세스했을 때보다 필터링 기능이 적을 수 있습니다.
ADO 애플리케이션에서 SQL Server Native Client를 사용하고 계산 열을 업데이트하려고 하면 오류가 보고됩니다. MDAC를 사용하면 업데이트가 허용되지만 무시되었습니다.
SQL Server Native Client는 단일 자체 포함 DLL(동적 연결 라이브러리) 파일입니다. 공개적으로 노출된 인터페이스는 배포를 용이하게 할 뿐만 아니라 보안 노출을 제한하기 위해 최소한으로 유지되었습니다.
OLE DB 및 ODBC 인터페이스만 지원됩니다.
SQL Server Native Client OLE DB 공급자 및 ODBC 드라이버 이름은 MDAC에 사용되는 이름과 다릅니다.
MDAC 구성 요소에서 제공하는 사용자 액세스 가능 기능은 SQL Server Native Client를 사용할 때 사용할 수 있습니다. 여기에는 연결 풀링, ADO 지원 및 클라이언트 커서 지원이 포함되지만 이에 제한되지 않습니다. 이러한 기능을 사용하는 경우 SQL Server Native Client는 데이터베이스 연결만 제공합니다. MDAC는 추적, 관리 컨트롤 및 성능 카운터와 같은 기능을 제공합니다.
애플리케이션은 SQL Server Native Client에서 OLE DB 핵심 서비스를 사용할 수 있지만 OLE DB 커서 엔진을 사용하는 경우 커서 엔진에 새 SQL Server 2005(9.x) 데이터 형식에 대한 지식이 없기 때문에 발생할 수 있는 잠재적인 문제를 방지하기 위해 데이터 형식 호환성 옵션을 사용해야 합니다.
SQL Server Native Client는 이전 SQL Server 데이터베이스에 대한 액세스를 지원합니다.
SQL Server Native Client에는 XML 통합이 포함되어 있지 않습니다. SQL Server Native Client는 SELECT ... FOR XML 쿼리이지만 다른 XML 기능은 지원하지 않습니다. 그러나 SQL Server Native Client는 SQL Server 2005(9.x)에 도입된 xml 데이터 형식을 지원합니다.
SQL Server Native Client는 연결 문자열 특성만 사용하여 클라이언트 쪽 네트워크 라이브러리를 구성할 수 있습니다. 보다 완전한 네트워크 라이브러리 구성이 필요한 경우 SQL Server 구성 관리자 사용해야 합니다.
SQL Server Native Client는 odbcbcp.dll 호환되지 않습니다. SQL Server Native Client를 사용하려면 ODBC 및 bcp API를 모두 사용하는 애플리케이션을 다시 빌드하여 sqlncli11.lib와 연결해야 합니다.
SQL Server Native Client는 MICROSOFT OLE DB provider for ODBC(MSDASQL)에서 지원되지 않습니다. MSDASQL 또는 MDAC SQLODBC 드라이버와 함께 ADO와 함께 MDAC SQLODBC 드라이버를 사용하는 경우 SQL Server Native Client에서 OLE DB를 사용합니다.
MDAC 연결 문자열 Trusted_Connection 키워드에 대한 부울 값(true)을 허용합니다. SQL Server Native Client 연결 문자열 예 또는 아니요를 사용해야 합니다.
경고 및 오류에 대한 사소한 변경이 발생했습니다. 이제 서버에서 반환된 경고 및 오류는 SQL Server Native Client에 전달될 때 동일한 심각도를 유지합니다. 특정 경고 및 오류를 트래핑하는 데 의존하는 경우 애플리케이션을 철저히 테스트했는지 확인해야 합니다.
SQL Server Native Client에는 MDAC보다 더 엄격한 오류 검사가 있습니다. 즉, ODBC 및 OLE DB 사양을 엄격하게 준수하지 않는 일부 애플리케이션은 다르게 동작할 수 있습니다. 예를 들어 SQLOLEDB 공급자는 결과 매개 변수에 대해 매개 변수 이름이 '@'로 시작해야 한다는 규칙을 적용하지 않았지만 SQL Server Native Client OLE DB 공급자는 이 규칙을 적용합니다.
SQL Server Native Client는 실패한 연결과 관련하여 MDAC와 다르게 동작합니다. 예를 들어 MDAC는 실패한 연결에 대해 캐시된 속성 값을 반환하는 반면 SQL Server Native Client는 호출 애플리케이션에 오류를 보고합니다.
SQL Server Native Client는 Visual Studio Analyzer 이벤트를 생성하지 않고 Windows 추적 이벤트를 생성합니다.
SQL Server Native Client는 perfmon과 함께 사용할 수 없습니다. Perfmon은 Windows에 포함된 MDAC SQLODBC 드라이버를 사용하는 DSN에서만 사용할 수 있는 Windows 도구입니다.
SQL Server Native Client가 SQL Server 2005(9.x) 이상 버전에 연결되면 서버 오류 16947이 SQL_ERROR 반환됩니다. 이 오류는 위치가 지정된 업데이트 또는 삭제가 행을 업데이트하거나 삭제하지 못할 때 발생합니다. 모든 버전의 SQL Server에 연결할 때 MDAC를 사용하면 서버 오류 16947이 경고(SQL_SUCCESS_WITH_INFO)로 반환됩니다.
SQL Server Native Client는 이전에 구현되지 않은 선택적 OLE DB 인터페이스인 IDBDataSourceAdmin 인터페이스를 구현하지만 이 선택적 인터페이스의 CreateDataSource 메서드만 구현됩니다. SQL Server의 이후 버전에서는 이 기능이 제거됩니다. 새 개발 작업에서는 이 기능을 사용하지 않도록 하고, 현재 이 기능을 사용하는 애플리케이션은 수정하세요.
SQL Server Native Client OLE DB 공급자는 TABLE_TYPE SYNONYM으로 설정된 TABLES 및 TABLE_INFO 스키마 행 집합의 동의어를 반환합니다.
데이터 형식 varchar(max), nvarchar(max), varbinary(max), xml, udt 또는 기타 큰 개체 형식의 반환 값은 SQL Server 2005(9.x) 이전의 클라이언트 버전으로 반환할 수 없습니다. 이러한 형식을 반환 값으로 사용하려면 SQL Server Native Client를 사용해야 합니다.
MDAC를 사용하면 수동 및 암시적 트랜잭션이 시작될 때 다음 문을 실행할 수 있지만 SQL Server Native Client는 실행하지 않습니다. 자동 커밋 모드에서 실행해야 합니다.
모든 전체 텍스트 작업(인덱스 및 카탈로그 DDL)
모든 데이터베이스 작업(데이터베이스 만들기, 데이터베이스 변경, 데이터베이스 삭제)
재구성
종료
Kill
Backup
MDAC 애플리케이션이 SQL Server에 연결되면 다음 표와 같이 SQL Server 2005(9.x)에 도입된 데이터 형식이 SQL Server 2000(8.x) 호환 데이터 형식으로 표시됩니다.
SQL Server 2005 형식 SQL Server 2000 형식 varchar(max) text nvarchar(max) ntext varbinary(max) image udt varbinary xml ntext 이 형식 매핑은 열 메타데이터에 대해 반환되는 값에 영향을 줍니다. 예를 들어 텍스트 열의 최대 크기는 2,147,483,647이지만 SQL Server Native Client ODBC는 varchar(max) 열의 최대 크기를 SQL_SS_LENGTH_UNLIMITED 보고하고 SQL Server Native Client OLE DB는 플랫폼에 따라 varchar(max) 열의 최대 크기를 2,147,483,647 또는 -1로 보고합니다.
SQL Server Native Client는 이전 버전과의 호환성을 이유로 연결 문자열 모호성을 허용합니다(예: 일부 키워드를 두 번 이상 지정할 수 있으며 위치 또는 우선 순위에 따라 충돌하는 키워드를 확인하여 허용될 수 있음). SQL Server Native Client의 향후 릴리스에서는 연결 문자열 모호성을 허용하지 않을 수 있습니다. SQL Server Native Client를 사용하도록 애플리케이션을 수정하여 연결 문자열 모호성에 대한 종속성을 제거하는 것이 좋습니다.
ODBC 또는 OLE DB 호출을 사용하여 트랜잭션을 시작하는 경우 SQL Server Native Client와 MDAC 간의 동작에 차이가 있습니다. 트랜잭션은 SQL Server Native Client로 즉시 시작되지만 MDAC를 사용하여 첫 번째 데이터베이스 액세스 후에 트랜잭션이 시작됩니다. SQL Server에서는 일괄 처리나 저장 프로시저의 실행이 완료된 후의 @@TRANCOUNT가 일괄 처리나 저장 프로시저를 시작할 때와 같아야 하기 때문에 이러한 동작 차이가 저장 프로시저와 일괄 처리의 동작에 영향을 줄 수 있습니다.
SQL Server Native Client를 사용하면 ITransactionLocal::BeginTransaction으로 인해 트랜잭션이 즉시 시작됩니다. MDAC를 사용할 경우 애플리케이션이 암시적 트랜잭션 모드의 트랜잭션이 필요한 문을 실행할 때까지 트랜잭션 시작이 지연되었습니다. 자세한 내용은 SET IMPLICIT_TRANSACTIONS(Transact-SQL)를 참조하세요.
System.Data.Odbc와 함께 SQL Server Native Client 드라이버를 사용하여 새로운 SQL Server 특정 데이터 형식 또는 기능을 노출하는 SQL Server 서버 컴퓨터에 액세스할 때 오류가 발생할 수 있습니다. System.Data.Odbc는 제네릭 ODBC 구현을 제공하며, 이후 공급업체 특정 기능 또는 확장을 노출하지 않습니다. (SQL Server Native Client 드라이버는 기본적으로 최신 SQL Server 기능을 지원하도록 업데이트됩니다.) 이 문제를 해결하려면 MDAC로 되돌리거나 System.Data.SqlClient로 마이그레이션할 수 있습니다.
SQL Server Native Client와 MDAC는 모두 행 버전 관리를 사용하여 커밋된 읽기 트랜잭션 격리를 지원하지만 SQL Server Native Client만 스냅샷 트랜잭션 격리를 지원합니다. 프로그래밍 측면에서 행 버전 관리를 사용하여 커밋된 읽기 트랜잭션 격리는 커밋된 읽기 트랜잭션과 동일합니다.