다음을 통해 공유


MDAC에서 SQL Server용 OLE DB 드라이버로 애플리케이션 업데이트

적용 대상: SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)

OLE DB 드라이버 다운로드

SQL Server용 OLE DB 드라이버와 MDAC(Microsoft Data Access Components) 간에는 여러 가지 차이점이 있습니다. Windows Vista부터 데이터 액세스 구성 요소를 이제 Windows 데이터 액세스 구성 요소(또는 Windows DAC)라고 합니다. 둘 다 SQL Server 데이터베이스에 대한 네이티브 데이터 액세스를 제공하지만 OLE DB Driver for SQL Server는 이전 버전과의 호환성을 유지하면서 SQL Server의 새로운 기능을 노출하도록 설계되었습니다.

또한 MDAC에는 OLE DB, ODBC 및 ADO(ActiveX Data Objects) 사용을 위한 구성 요소가 포함되어 있지만 OLE DB Driver for SQL Server는 OLE DB만 구현합니다(ADO는 SQL Server용 OLE DB 드라이버의 기능에 액세스할 수 있음).

OLE DB Driver for SQL Server 및 MDAC는 다른 영역과 다릅니다.

  • ADO를 사용하여 OLE DB Driver for SQL Server에 액세스하는 사용자는 SQL OLE DB 공급자에 액세스할 때보다 필터링 기능이 적을 수 있습니다.

  • ADO 애플리케이션이 OLE DB Driver for SQL Server를 사용하고 계산된 열을 업데이트하는 경우 오류가 보고됩니다. MDAC를 사용하면 업데이트가 수락되었지만 무시되었습니다.

  • OLE DB Driver for SQL Server는 단일 자체 포함 DLL(동적 링크 라이브러리) 파일입니다. 공개적으로 노출된 인터페이스는 배포를 용이하게 할 뿐만 아니라 보안 노출을 제한하기 위해 최소한으로 유지되었습니다.

  • OLE DB 인터페이스만 지원됩니다.

  • OLE DB Driver for SQL Server 이름은 MDAC에 사용되는 이름과 다릅니다.

  • OLE DB Driver for SQL Server를 사용하는 경우 MDAC 구성 요소에서 제공하는 사용자 액세스 가능 기능을 사용할 수 있습니다. 여기에는 연결 풀링, ADO 지원 및 클라이언트 커서 지원이 포함되지만 이에 제한되지 않습니다. 이러한 기능을 사용하는 경우 OLE DB Driver for SQL Server는 데이터베이스 연결만 제공합니다. MDAC는 추적, 관리 컨트롤 및 성능 카운터와 같은 기능을 제공합니다.

  • 애플리케이션은 OLE DB Driver for SQL Server에서 OLE DB 핵심 서비스를 사용할 수 있지만, OLE DB 커서 엔진을 사용하는 경우 커서 엔진에 새 SQL Server 2005(9.x) 데이터 형식에 대한 지식이 없기 때문에 발생할 수 있는 잠재적인 문제를 방지하기 위해 데이터 형식 호환성 옵션을 사용해야 합니다.

  • OLE DB Driver for SQL Server는 이전 SQL Server 데이터베이스에 대한 액세스를 지원합니다.

  • OLE DB Driver for SQL Server에는 XML 통합이 포함되어 있지 않습니다. OLE DB Driver for SQL Server에서 SELECT ... FOR XML 쿼리이지만 다른 XML 기능은 지원하지 않습니다. 그러나 OLE DB Driver for SQL Server는 SQL Server 2005(9.x)에 도입된 xml 데이터 형식을 지원합니다.

  • SQL Server용 OLE DB 드라이버는 연결 문자열 특성만 사용하여 클라이언트 쪽 네트워크 라이브러리 구성을 지원합니다. 보다 완전한 네트워크 라이브러리 구성이 필요한 경우 SQL Server 구성 관리자 사용해야 합니다.

  • MDAC 연결 문자열 Trusted_Connection 키워드에 대한 부울 값(true)을 허용합니다. OLE DB Driver for SQL Server 연결 문자열 예 또는 아니요를 사용해야 합니다.

  • 경고 및 오류에 대한 사소한 변경이 발생했습니다. 이제 서버에서 반환되는 경고와 오류가 SQL Server용 OLE DB 드라이버로 전달될 때 동일한 심각도를 유지합니다. 특정 경고 및 오류를 트래핑하는 데 의존하는 경우 애플리케이션을 철저히 테스트했는지 확인해야 합니다.

  • SQL Server용 OLE DB 드라이버에는 MDAC보다 엄격한 오류 검사 기능이 있으므로 OLE DB 사양을 엄격하게 준수하지 않는 일부 애플리케이션이 다르게 동작할 수 있습니다. 예를 들어 SQLOLEDB 공급자는 결과 매개 변수의 경우 매개 변수 이름이 ‘@’로 시작해야 한다는 규칙을 적용하지 않지만 SQL Server용 OLE DB 드라이버는 이 규칙을 적용합니다.

  • OLE DB Driver for SQL Server는 실패한 연결과 관련하여 MDAC와 다르게 동작합니다. 예를 들어 MDAC는 실패한 연결에 대해 캐시된 속성 값을 반환하는 반면 OLE DB Driver for SQL Server는 호출 애플리케이션에 오류를 보고합니다.

  • OLE DB Driver for SQL Server는 Visual Studio Analyzer 이벤트를 생성하지 않고 Windows 추적 이벤트를 생성합니다.

  • OLE DB Driver for SQL Server는 perfmon과 함께 사용할 수 없습니다. Perfmon은 Windows에 포함된 MDAC SQLODBC 드라이버를 사용하는 DSN에서만 사용할 수 있는 Windows 도구입니다.

  • OLE DB Driver for SQL Server가 SQL Server 2005(9.x) 이상 버전에 연결되면 서버 오류 16947이 SQL_ERROR 반환됩니다. 이 오류는 위치가 지정된 업데이트 또는 삭제가 행을 업데이트하거나 삭제하지 못할 때 발생합니다. 모든 버전의 SQL Server에 연결할 때 MDAC를 사용하면 서버 오류 16947이 경고(SQL_SUCCESS_WITH_INFO)로 반환됩니다.

  • OLE DB Driver for SQL Server는 이전에 구현되지 않은 선택적 OLE DB 인터페이스인 IDBDataSourceAdmin 인터페이스를 구현하지만 이 선택적 인터페이스의 CreateDataSource 메서드만 구현됩니다. SQL Server의 이후 버전에서는 이 기능이 제거됩니다. 새 개발 작업에서는 이 기능을 사용하지 않도록 하고, 현재 이 기능을 사용하는 애플리케이션은 수정하세요.

  • OLE DB Driver for SQL Server는 TABLE_TYPE SYNONYM으로 설정된 TABLES 및 TABLE_INFO 스키마 행 집합의 동의어를 반환합니다.

  • 데이터 형식 varchar(max), nvarchar(max), varbinary(max), xml, udt 또는 기타 큰 개체 형식의 반환 값은 SQL Server 2005(9.x) 이전의 클라이언트 버전으로 반환할 수 없습니다. 이러한 형식을 반환 값으로 사용하려면 OLE DB Driver for SQL Server를 사용해야 합니다.

  • MDAC를 사용하면 수동 및 암시적 트랜잭션이 시작될 때 다음 문을 실행할 수 있지만 OLE DB Driver for SQL Server는 실행하지 않습니다. 자동 커밋 모드에서 실행해야 합니다.

    • 모든 전체 텍스트 작업(인덱스 및 카탈로그 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이지만 OLE DB Driver for SQL Server는 플랫폼에 따라 varchar(max) 열의 최대 크기를 2,147,483,647 또는 -1로 보고합니다.

  • OLE DB Driver for SQL Server는 이전 버전과의 호환성을 이유로 연결 문자열 모호성을 허용합니다(예: 일부 키워드를 두 번 이상 지정할 수 있으며 위치 또는 우선 순위에 따라 충돌하는 키워드를 확인하여 허용될 수 있음). 이후 릴리스의 OLE DB Driver for SQL Server에서는 연결 문자열의 모호성을 허용하지 않을 수 있습니다. SQL Server용 OLE DB 드라이버를 사용하도록 애플리케이션을 수정하는 경우 연결 문자열 모호성에 대한 종속성을 제거하는 것이 좋습니다.

  • OLE DB 호출을 사용하여 트랜잭션을 시작하는 경우 OLE DB Driver for SQL Server와 MDAC 간에 동작 차이가 있습니다. OLE DB Driver for SQL Server를 사용하면 트랜잭션이 즉시 시작되지만 MDAC를 사용하면 첫 번째 데이터베이스 액세스 후에 트랜잭션이 시작됩니다. SQL Server에서는 일괄 처리나 저장 프로시저의 실행이 완료된 후의 @@TRANCOUNT가 일괄 처리나 저장 프로시저를 시작할 때와 같아야 하기 때문에 이러한 동작 차이가 저장 프로시저와 일괄 처리의 동작에 영향을 줄 수 있습니다.

  • OLE DB Driver for SQL Server를 사용하면 ITransactionLocal::BeginTransaction으로 인해 트랜잭션이 즉시 시작됩니다. MDAC를 사용하면 애플리케이션이 암시적 트랜잭션 모드에서 트랜잭션이 필요한 문을 실행할 때까지 트랜잭션 시작이 지연되었습니다. 자세한 내용은 SET IMPLICIT_TRANSACTIONS(Transact-SQL)를 참조하세요.

OLE DB Driver for SQL Server와 MDAC는 모두 행 버전 관리를 사용하여 커밋된 읽기 트랜잭션 격리를 지원하지만 OLE DB Driver for SQL Server만 스냅샷 트랜잭션 격리를 지원합니다. 프로그래밍 측면에서 행 버전 관리를 사용하여 커밋된 읽기 트랜잭션 격리는 커밋된 읽기 트랜잭션과 동일합니다.

참고 항목

SQL Server용 OLE DB 드라이버로 애플리케이션 빌드