OLE DB와 ODBC 데이터 소스의 차이점은 무엇입니까?


171

pivotcache에 대한 MS Excel 도움말 기사를 읽고 OLE DB 및 ODBC 소스의 의미가 무엇인지 궁금 합니다.

... 현재는 이전 버전의 Microsoft Excel과의 호환성을 위해 존재하는 SQL 속성 대신 CommandText 속성을 사용해야합니다. 두 속성을 모두 사용하는 경우 CommandText 속성 값이 우선합니다.

들어 OLE DB 소스 의 CommandType을 속성은 CommandText 속성의 값을 설명합니다.

들어 ODBC 소스 , CommandText 속성을 정확히 SQL 속성과 같은 기능과 속성을 설정하면 데이터의 원인은 갱신 할 ...

나는 당신의 짧은 답변에 정말 감사합니다.


2
이 책에 따르면 Microsoft SQL Server 2012를 사용한 데이터웨어 하우스 구현 에 따르면, "Microsoft는 조만간 OLE DB 연결에 대한 지원이 ODBC 연결을 위해 제거 될 것이라고 발표했습니다."
B. Burgdorf

2
2017 년 10 월 6 일부터 사용되지 않습니다. 참조 blogs.msdn.microsoft.com/sqlnativeclient/2017/10/06/...
파 방해를

답변:


147

에 따르면 ADO : ActiveX 데이터 개체 , 2001 년 한빛 출판 제이슨 T 로프의 책, (여기에 뛰어난 다이어그램), 그는 모질라 말했다 정확하게 무엇을 말한다.

(도서의 7 페이지에서 직접)

  • ODBC는 관계형 데이터베이스에만 액세스를 제공합니다
  • OLE DB는 다음과 같은 기능을 제공합니다
    • 형식이나 위치에 관계없이 데이터에 액세스
    • ODBC 데이터 소스 및 ODBC 드라이버에 대한 전체 액세스

따라서 OLE DB는 ODBC 드라이버 계층을 통해 SQL 기반 데이터 소스와 상호 작용하는 것 같습니다.

대체 텍스트

이 이미지가 올바른지 100 % 확실하지 않습니다. 확실하지 않은 두 가지 연결은 ADO C-api를 통한 ADO.NET과 SQL 기반 데이터 소스에 대한 ODBC를 통한 OLE DB입니다 ( 이 다이어그램 에서 저자는 ODBC를 통해 OLE DB의 액세스를 허용하지 않기 때문에) 실수입니다).


7
OLE DB가 ODBC를 사용하여 SQL 데이터 소스에 연결하는 경우 OLE DB가 지원하는 모든 SQL 데이터 소스는 ODBC에 의해 지원되어야하지만, 그렇지 않습니다. 원래 다이어그램이 정확해야합니다 (이것은 아님). ).
Danny Varod

8
실제로 OLE DB는 때때로 ODBC 드라이버를 랩핑하지만 그렇지 않은 경우도 있습니다. 여기를보십시오
bobobobo

3
이 항목 jamesmccaffrey.wordpress.com/2006/05/02/odbc-vs-ole-db 는 SQL DS의 경우 OLEDB가 ODBC를 통해 진행 된다고 말합니다.
Hernán

1
@DannyVarod 아, 걱정 마세요. " OLE DB가 지원하는 모든 SQL 데이터 소스는 ..." 에서 중요한 한정자를 놓쳤다 . 나는 OLE DB가 비 RDBMS 데이터 소스를 지원하기 때문에 OLE DB가 지원하는 필터링되지 않은 데이터 소스 세트가 ODBC가 지원하는 데이터 세트의 상위 세트가 될 수 있다는 사실에 대해 이야기하고있었습니다.
Asad Saeeduddin

4
ADO.NET은 ADO를 래핑하지 않습니다. ADO.NET 클래스는 일반적으로 다른 공급자 / 드라이버 계층을 통하지 않고 데이터베이스 또는 데이터베이스 네트워크 라이브러리와 직접 통신합니다. 예를 들어, System.Data.SqlClient관리 코드에서 TDS 프로토콜을 처리하고 네트워크를 통한 TCP / 명명 된 파이프 등 전송을 처리하기 위해 원시 코드 만 사용합니다. 자체 관리 공급자가없는 데이터베이스의 경우 System.Data.OleDbOLE DB System.Data.Odbc를 랩핑 하거나 ODBC를 랩핑 하는 데 사용할 수 있지만 권장되지는 않습니다.
Mike Dimmick

55

ODBC :-관계형 데이터베이스 (Sql Server, Oracle 등)에만 해당

OLE DB :-관계형 및 비 관계형 데이터베이스 모두에 해당합니다. (Oracle, Sql-Server, Excel, 원시 파일 등)


4
잘못되면 드라이버에 따라 관계형이 아닌 상점과 대화 할 수 있습니다.
Andy Dent

1
아니요, ODBC를 사용하면 관계형 데이터베이스뿐만 아니라 플랫 CSV 파일도 쿼리 할 수 ​​있습니다.
Wernfried Domscheit

잘못된! 텍스트 파일과 XML ODBC 드라이버도 있습니다.
Scott Chu

1
이것이 잘못되었다고 생각합니다 ... Open Database Connectivity (ODBC) is Microsoft's strategic interface for accessing data in a heterogeneous environment of relational and non- relational database management systems. support.microsoft.com/en-us/kb/110093
uzay95

11
롤, 요 남자들이 2009 년이나 2016 년에 ODBC에 대해 이야기하고 있습니까? 맞았습니다.
Yousha Aleayoub

42

여기 내 이해 (권한 없음)가 있습니다.

ODBC는 대부분의 소프트웨어 공급 업체에서 지원하는 기술에 독립적 인 개방형 표준입니다. OLEDB는 COM 시대의 기술 별 Microsoft API입니다 (COM은 .NET 이전의 구성 요소 및 상호 운용성 기술이었습니다)

언젠가는 다양한 데이터 소스 공급 업체 (예 : Oracle 등)가 Microsoft 데이터 소비자와 호환되고 해당 제품에 대한 OLEDB 공급자를 개발했지만 대부분의 경우 OLEDB는 Microsoft 전용 표준으로 남아 있습니다. 이제 대부분의 Microsoft 데이터 소스는 주로 레거시 ODBC 데이터 소비자와의 호환성을 위해 ODBC 및 OLEDB 액세스를 모두 허용합니다. 또한 ODBC 용 OLEDB 공급자 (래퍼)가있어 원하는 경우 OLEDB를 사용하여 ODBC 데이터 원본에 액세스 할 수 있습니다.

기능 측면에서 OLEDB는 ODBC보다 실질적으로 풍부하지만 한 고리에서 규칙까지의 모든 증후군 (과도하게 일반적이고 지나치게 복잡하며 비 소견)이 있습니다.

Microsoft 이외의 세계에서는 ODBC 기반 데이터 공급자와 클라이언트가 널리 사용되며 어디에도 가지 않습니다.

Microsoft bubble OLEDB는 해당 데이터 소스의 기본 전송 계층 (예 : MS SQL Server 용 TDS) 위에 구축 된 기본 .NET API를 선호하여 단계적으로 폐지되고 있습니다.


20

ODBC와 OLE DB는 경쟁하는 두 가지 데이터 액세스 기술입니다. 특히 SQL Server와 관련하여 Microsoft는 두 가지 모두를 서로 다른시기에 선호하는 미래 방향으로 홍보했습니다.

ODBC

ODBC는 테이블과 같은 데이터에 액세스하기위한 업계 표준 인터페이스입니다. 주로 데이터베이스 용으로 개발되었으며 레코드 모음으로 데이터를 제공하며 각 레코드는 필드 모음으로 그룹화됩니다. 각 필드에는 포함 된 데이터 유형에 적합한 자체 데이터 유형이 있습니다. 각 데이터베이스 공급 업체 (Microsoft, Oracle, Postgres…)는 데이터베이스에 대한 ODBC 드라이버를 제공합니다.

데이터베이스 테이블은 아니지만 같은 방식으로 데이터에 액세스하는 것이 충분히 유사한 객체에 대한 ODBC 드라이버도 있습니다. 스프레드 시트, CSV 파일 및 열 보고서가 그 예입니다.

OLE DB

OLE DB는 데이터 액세스를위한 Microsoft 기술입니다. ODBC와 달리 전자 메일 메시지, 웹 페이지, Word 문서 및 파일 디렉토리와 같은 테이블과 데이터가 아닌 데이터를 모두 포함합니다. 그러나 객체 지향이 아니라 프로 시저 지향이며 데이터 소스에 대한 액세스를 개발하기에는 다소 어려운 인터페이스로 간주됩니다. 이를 극복하기 위해 ADO는 OLE DB를 기반으로 한 객체 지향 계층으로 설계되었으며 더 강력하면서도 강력한 방법을 제공합니다. ADO의 장점은 모든 데이터 소스 유형에 적용되는 속성에 액세스하는 데 쉽게 사용할 수있는 것처럼 지정된 유형의 데이터 소스에 특정한 속성을 조작하는 데 사용할 수 있다는 것입니다. 불만족스러운 최저 공통 분모로 제한되지 않습니다.

모든 데이터베이스에는 ODBC 드라이버가 있지만 OLE DB 드라이버는 없습니다. 그러나 OLE와 ODBC 사이에 사용 가능한 인터페이스가 있는데 OLE DB와 같은 방식으로 액세스하려는 경우 사용할 수 있습니다. 이 인터페이스를 MSDASQL (ODBC 용 Microsoft OLE DB 공급자)이라고합니다.

SQL Server 데이터 액세스 기술

SQL 서버는 Microsoft에서 만든 (1)이며, 이후 (2) 마이크로 소프트 데이터베이스 플랫폼은 ODBC와 OLE DB 모두는 그것을위한 자연 적합합니다.

ODBC

다른 모든 데이터베이스 플랫폼에는 ODBC 인터페이스가 있었으므로 Microsoft는 SQL Server 용 인터페이스를 제공해야했습니다. 또한 Microsoft Access의 원래 기본 기술인 DAO는 ODBC를 모든 외부 데이터 원본과 통신하는 표준 방법으로 사용합니다. 이로 인해 ODBC 인터페이스가 정식으로 작성되었습니다. SQL Server 2000과 함께 릴리스 된 SQL Server 용 버전 6 ODBC 드라이버는 여전히 사용 중입니다. 후속 릴리스에서 나타나는 새로운 데이터 유형, 연결 기술, 암호화, HA / DR 등을 처리하기 위해 업데이트 된 버전이 출시되었습니다. 2018 년 9 월 7 일 현재 최신 릴리스는 2018 년 3 월 23 일에 릴리스 된 v13.1“SQL Server 용 ODBC 드라이버”입니다.

OLE DB

이 기술은 Microsoft 자체 기술이며, ADO 계층과 함께 약 2002 – 2005 년 사이에 강력하게 홍보하고있었습니다. 그들은 이것이 선택한 데이터 액세스 기술이되기를 바랐습니다. (ADO를 Access 2002/2003에서 데이터에 액세스하기위한 기본 방법으로 만들었습니다.) 그러나 다음과 같은 여러 가지 이유로 인해 이것이 일어나지 않을 것이라는 것이 분명해졌습니다.

  1. 세계는 Microsoft 기술로 전환하지 않고 ODBC에서 멀어 질 것입니다.
  2. DAO / ODBC는 ADO / OLE DB보다 빠르며 MS Access에 완전히 통합되어 자연스럽게 죽지 않을 것입니다.
  3. Microsoft에서 개발 한 새로운 기술, 특히 ADO.NET도 ODBC와 직접 통신 할 수 있습니다. ADO.NET은 OLE DB와 직접 통신 할 수도 있기 때문에 (ADO를 역류로 남겨 두는 것만) ADO와는 달리 (ADO와는 달리) 그것에 의존하지 않았습니다.

이러한 이유 , 마이크로 소프트는 실제로 데이터 액세스 기술로 OLE DB를 사용되지 V11 (SQL 서버 2012) 이후 SQL Server 릴리스합니다. 이 시점 이전에는 ODBC와 OLE DB 기술을 모두 지원하는 SQL Server Native Client를 생성하고 업데이트했습니다. 그러나 2012 년 말에 그들은 SQL Server에서 네이티브 관계형 데이터 액세스를 위해 ODBC와 연계 할 것이라고 발표했으며, 다른 모든 사람들도 그렇게하도록 장려했습니다. 또한 v11 / SQL Server 2012 이후의 SQL Server 릴리스 는 OLE DB를 적극적으로 지원 하지 않을 것이라고 언급했습니다 .

이 발표는 항의의 폭풍을 일으켰다. 사람들은 왜 MS가 자신이 맡기도록 수년 동안 소비했던 기술을 갑자기 사용하지 않는지 이해하지 못했습니다. 또한 SQL Server에 밀접하게 연결된 MS 작성 응용 프로그램 인 SSAS / SSRS 및 SSIS는 OLE DB에 전적으로 또는 부분적으로 의존했습니다. 또 다른 불만은 OLE DB에 ODBC로 다시 포팅 할 수없는 바람직한 기능이 있다는 것입니다. 결국 OLE DB에는 많은 장점이있었습니다.

2017 년 10 월 Microsoft는 OLE DB를 공식적으로 폐기하고 폐기하지 않았습니다 . 이들은 Native Client 11의 기존 기능 세트를 보유하고 다중 서브넷 장애 조치 및 TLS 1.2 지원을 도입 할 새로운 드라이버 (MSOLEDBSQL)가 임박했다고 발표했습니다. 이 드라이버는 2018 년 3 월에 출시되었습니다.


@ChieltenBrinke 나는 게시물을 업데이트하기 위해 링크를 비롯해 적어도 그들이 유발 한 의견과 같은 여러 출처에서 게시물을 모았습니다. 다른 출처는 bobobobo가 언급 한 ADO에 대한 Jason Roff의 책과 Litwin, Getz 및 Gunderloy (실제이지만 실제 고전)의 Access 2002 데스크탑 개발자 핸드북입니다. 나는 마이크로 소프트에서 어떤 종류의 내부적 인 길을 가지고 있지 않기 때문에 다양한 방향의 변화에 ​​대한 생각에 대한 나의 추측은 그럴듯하지만 내 자신의 추측이다.
marktwo

6

매우 기본적인 수준에서 이는 다른 데이터 소스 (예 : 데이터베이스)에 대해 다른 API 일뿐입니다. OLE DB는 더 새롭고 더 좋습니다.

Wikipedia에서 더 자세히 읽을 수 있습니다.

  1. OLE DB
  2. ODBC

즉, ODBC 드라이버 또는 OLE DB 드라이버를 사용하여 동일한 데이터베이스에 연결할 수 있습니다. 이 경우 데이터베이스 동작의 차이는 책이 참조하는 것입니다.


4
많은 IT 관련 주제와 마찬가지로 상황이 거의 다되었습니다. SQL 2012는 OLE DB Native 공급자를 지원하는 마지막 버전이며 이제 응용 프로그램은 이전 ODBC로 전환해야합니다. SQL Server의 "오래된 날들" technet.microsoft.com/en-us/library/hh967418.aspx
Chris Wood

4
이 2008 년에 진실되고 있지만 2014 년 수도 "OLE DB는 새로운이며, 틀림없이 더 나은"
마이클 데이비드 왓슨

@MichaelDavidWatson 그래서 당신은 무엇을 말할 것입니다. ODBC 또는 OLEDB를 더 잘 사용하십니까? 가능한 한 많은 SQL 데이터베이스를 지원해야합니다. 그리고 지적했듯이 OLE DB는 ODBC 데이터 원본에도 액세스 할 수 있습니다. 그렇다면 2015 년에 왜 "OLE DB가 더 새롭고 논쟁의 여지가 더 좋다"고 여전히 말할 수 있습니까? :)
LuckyLikey

@LuckyLikey MS는 OLEDB를 더 이상 사용하지 않으며 SQL Server는 더 이상 OLEDB를 지원하지 않습니다 (SS 2012는 마지막으로 지원했습니다). msdn.microsoft.com/ko-kr/library/hh967418.aspx
Robino

5

둘 다 데이터 공급자 (코드가 데이터 소스와 통신하는 데 사용할 API)입니다. 1998 년에 소개 된 Oledb는 ODBC를 대체하기위한 것입니다 (1992 년에 도입 됨)



3

모든 세부 사항을 잘 모르겠지만 OLE DB와 ODBC는 각각의 구현 특정 세부 사항을 처리하지 않고도 다양한 유형의 데이터베이스에 연결할 수있는 두 개의 API라는 것을 알고 있습니다. OLE DB의 Wikipedia 기사에 따르면 OLE DB는 Microsoft의 ODBC 후속 제품이며 데이터베이스 소스로 스프레드 시트에 액세스하는 것과 같이 ODBC로는 수행 할 수없는 일부 기능을 제공합니다.


2

Microsoft 웹 사이트에서 네이티브 OLEDB 공급자는 SQL 서버에 직접 적용되고 ODBC 용 OLEDB 공급자라고하는 다른 OLEDB 공급자는 Sysbase, DB2 등과 같은 다른 데이터베이스에 액세스 할 수 있습니다. OLEDB 공급자에는 여러 종류의 구성 요소가 있습니다. 자세한 내용 은 MSDN의 분산 쿼리를 참조하십시오 .


0

ODBC는 관계형 데이터베이스에서만 작동하며 Ms Excel 파일과 같은 비 관계형 데이터베이스에서는 작동하지 않습니다. Olebd가 모든 것을 할 수있는 곳.


-3

M $가 OLEDB를 개발 한 이유를 알기 위해 OLEDB와 ODBC를 비교할 수 없습니다. 대신 OLEDB를 DAO, RDO 또는 ADO와 비교해야합니다. 후자는 주로 SQL에 의존합니다. 그러나 OLEDB는 COM에 의존합니다. 그러나 ODBC는 이미 수년간 존재했기 때문에이를 해결하기위한 OLEDB-ODBC 브리지가 있습니다. M $가 OLEDB를 발명 할 때 큰 그림이 있다고 생각합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.