Qual é a diferença entre as fontes de dados OLE DB e ODBC?

Estava a ler um artigo de ajuda do MS Excel sobre o pivotcache e pergunto - me o que significam as fontes do OLE DB e do ODBC.

...Você deve usar o texto de comando propriedade em vez da propriedade SQL, que agora existe principalmente para compatibilidade com versões anteriores de Microsoft Excel. Se utilizar ambos propriedades, a propriedade do texto de comandos o valor tem precedência.

For OLE DB sources , the CommandType a propriedade descreve o valor de o Propriedade CommandText.

Para fontes ODBC , o texto de comando a propriedade funciona exactamente como a Propriedade SQL, e definir a propriedade faz com que os dados sejam atualizados...

Agradeço as tuas respostas curtas.

 144
Author: Martin08, 2008-09-19

11 answers

, de Acordo com ADO: ActiveX Data Objects, um livro de Jason T. Roff, publicado pela O'Reilly Media, em 2001, (excelente diagrama aqui), ele diz precisamente o que a MOZILLA disse.

(directamente da Página 7 desse livro)

  • o ODBC fornece acesso apenas a bases de dados relacionais
  • OLE DB fornece as seguintes características
    • acesso aos dados, independentemente do seu formato ou localização
  • Acesso total aos dados do ODBC fontes e condutores de ODBC

Parece que OLE DB interage com fontes de dados baseadas em SQL através da camada de driver ODBC.

alt text

Não tenho a certeza se esta imagem está correcta.As duas ligações de que Não tenho a certeza São: ADO.NET thru ADO C-api, and OLE DB thru ODBC to SQL-based data source (because in this diagram the author doesn't put OLE DB access thru ODBC, which I believe is a mistake).

 127
Author: bobobobo, 2017-02-08 14:13:27

ODBC: - apenas para bases de dados relacionais (servidor Sql, Oracle etc)

- Para as bases de dados relacionais e não relacionais. (Oracle, SQL-Server, Excel, raw files, etc)
 52
Author: MOZILLA, 2009-04-24 09:47:52
Aqui está o meu entendimento (não autoritário): O ODBC é um padrão aberto de tecnologia-agnóstico suportado pela maioria dos fornecedores de software. O OLEDB é uma API da Microsoft (COM era uma tecnologia de componentes e interoperabilidade antes do. NET) [[[2]]] específica em tecnologia da Microsoft Da Com-era (COM era uma tecnologia de componentes e interoperabilidade antes do. NET)

Em algum momento vários fornecedores de dados (por exemplo, Oracle, etc.), disposto a ser compatível com os consumidores de dados da Microsoft, desenvolveu fornecedores de OLEDB para seus produtos, mas, na maioria das vezes, a OLEDB continua a ser um Microsoft-only standard. Agora, a maioria das fontes de dados da Microsoft permitem o acesso ODBC e OLEDB, principalmente para a compatibilidade com os antigos consumidores de dados ODBC. Além disso, existe OLEDB provider (wrapper) para ODBC, que permite que se use OLEDB para acessar fontes de dados ODBC, se assim o desejar.

Em termos de características OLEDB é substancialmente mais rico do que ODBC, mas sofre de síndrome de um anel-a-regra-todos-(excessivamente Genérico, sobrecomplicado, não opinado).

Em Não-Microsoft os fornecedores de dados e clientes da World ODBC são amplamente utilizados e não vão a lado nenhum.

No interior da Microsoft bubble OLEDB está a ser gradualmente eliminado em favor das APIs nativas. net construídas em cima de qualquer que seja a camada de transporte nativa para essa fonte de dados (por exemplo, TDS para MS SQL Server).

 38
Author: zvolkov, 2013-09-25 14:01:10

A um nível muito básico, essas são apenas API diferentes para as diferentes fontes de dados (isto é, bases de dados). OLE DB é mais novo e indiscutivelmente melhor.

Você pode ler mais em ambos na Wikipédia:

  1. OLE DB
  2. ODBC
Ou seja, pode ligar-se à mesma base de dados usando um controlador ODBC ou um controlador OLE DB. A diferença no comportamento da base de dados nesses casos é a que o seu livro se refere.
 6
Author: Ilya Kochetov, 2016-11-04 21:57:16

Ambos são fornecedores de dados (API que o seu código usará para falar com uma fonte de dados). O Oledb, introduzido em 1998, pretendia substituir o ODBC (introduzido em 1992)

 5
Author: Arcturus, 2012-10-23 14:27:59

O ODBC e o OLE DB são duas tecnologias concorrentes de acesso aos dados. Especificamente em relação ao SQL Server, a Microsoft promoveu ambos como sua direção futura preferida-embora em momentos diferentes.

ODBC

O ODBC é uma interface padrão para a indústria para aceder a dados semelhantes a tabelas. Foi desenvolvido principalmente para bases de dados e apresenta dados em coleções de registros, cada um dos quais é agrupado em uma coleção de campos. Cada campo tem o seu próprio tipo de dados adequado ao tipo de dados que contém. Cada vendedor de banco de dados (Microsoft, Oracle, Postgres, ...) fornece um driver ODBC para seu banco de dados.

Existem também drivers ODBC para objetos que, embora não sejam tabelas de banco de dados, são suficientemente semelhantes que acessar dados da mesma forma é útil. Exemplos são planilhas, arquivos CSV e relatórios colunares.

OLE DB

OLE DB é uma tecnologia Microsoft para acesso a dados. Ao contrário do ODBC, abrange tanto o tipo de mesa como o não-Tipo de mesa. dados como mensagens de E-mail, páginas web, documentos Word e diretórios de arquivos. No entanto, é orientada para procedimentos e não para objectos e é considerada uma interface bastante difícil com a qual desenvolver o acesso a fontes de dados. Para superar isso, ADO foi projetada para ser uma camada orientada a objetos em cima de OLE DB e para fornecer uma forma mais simples e mais alta-embora ainda muito poderosa-de trabalhar com ela. A grande vantagem da ADO é que você pode usá-lo para manipular propriedades que são específico para um determinado tipo de fonte de dados, tão facilmente quanto você pode usá-lo para acessar as propriedades que se aplicam a todos os tipos de fonte de dados. Não se restringe a um mínimo de denominador comum insatisfatório.

Apesar de todas as bases de dados terem drivers ODBC, nem todas têm drivers OLE DB. No entanto, existe uma interface disponível entre OLE e ODBC que pode ser usado se você quiser acessá-los em OLE DB-like forma. Esta interface é chamada de MSDASQL (Microsoft OLE DB provider para ODBC).

Tecnologias de acesso de dados ao servidor SQL

Uma vez que o SQL Server é (1) feito pela Microsoft, e (2) a plataforma de dados da Microsoft, ODBC e OLE DB são um ajuste natural para ele.

ODBC

Uma vez que todas as outras plataformas de base de dados tinham interfaces ODBC, a Microsoft obviamente teve de fornecer uma para o servidor SQL. Além disso, a DAO, a tecnologia padrão original no Microsoft Access, usa o ODBC como a forma padrão de falar com todas as fontes de dados externas. Presente fiz uma interface ODBC uma condição sine qua non. A versão 6 ODBC driver para o SQL Server, lançado com o SQL Server 2000, ainda está em torno. Versões atualizadas foram lançadas para lidar com os novos tipos de Dados, Tecnologias de conexão, criptografia, HA/DR etc. que apareceram com lançamentos subsequentes. A partir de 09/07/2018, o lançamento Mais Recente é v13.1 "ODBC Driver for SQL Server", lançado em 23/03/2018.

OLE DB

Esta é a própria tecnologia da Microsoft, que eles estavam promovendo fortemente a partir de cerca de 2002-2005, juntamente com a sua camada ado acompanhante. Eles estavam evidentemente esperando que se tornasse a tecnologia de acesso de dados de escolha. (Eles até fizeram da ADO o método padrão para acessar dados no Access 2002/2003. No entanto, tornou-se aparente que isso não iria acontecer por uma série de razões, tais como:
  1. o mundo não ia converter-se à Microsoft technologies e longe de ODBC;
  2. O DAO / ODBC foi mais rápido que o ADO / OLE DB e foi também completamente integrado no MS Access, por isso não ia ter uma morte natural. Novas tecnologias que estavam a ser desenvolvidas pela Microsoft, especificamente ADO.NET, também podia falar directamente com o ODBC. ADO.NET podia falar directamente com o OLE DB também (deixando assim ADO em um backwater), mas não era (ao contrário Ado) apenas depende disso.

Por estas razões e outras , A Microsoft na verdade desactualizou OLE DB como uma tecnologia de acesso a dados para versões de servidores SQL depois do v11 (SQL Server 2012). Por um par de anos antes deste ponto, eles estavam produzindo e atualizando o cliente nativo do servidor SQL, que suportava tanto a tecnologia ODBC e OLE DB. No final de 2012, no entanto, eles anunciaram que estariam alinhados com o ODBC para acesso de dados relacionais nativas no servidor SQL, e incentivaram todos os outros a fazer o mesmo. Eles também afirmaram que as versões do servidor SQL após o v11 / SQL Server 2012 iria ativamente não suportar OLE DB!

Isto o anúncio provocou uma tempestade de protesto. As pessoas não compreenderam porque é que a EM estava subitamente a depreciar uma tecnologia que tinham passado anos a fazer com que se comprometessem. Além disso, as SSAS/SSRS e SSIS, que eram aplicações escritas em MS intimamente ligadas ao servidor SQL, eram total ou parcialmente dependentes do OLE DB. No entanto, outra queixa foi que OLE DB tinha certas características desejáveis que parecia impossível de transportar de volta para ODBC – afinal, OLE DB tinha muitos bons pontos.

Em October 2017, Microsoft relented and officially un-obsolected OLE DB . Eles anunciaram a chegada iminente de um novo driver (MSOLEDBSQL) que teria o conjunto de recursos existente do cliente nativo 11 e também introduziria multi-subnet failover e suporte TLS 1.2. O piloto foi libertado em março de 2018.

 4
Author: marktwo, 2018-10-04 19:14:29

Não tenho a certeza de todos os detalhes, mas o meu entendimento é que OLE DB e ODBC são duas APIs que estão disponíveis para se conectar a vários tipos de bases de dados sem ter que lidar com todos os detalhes específicos de implementação de cada. De acordo com o Artigo da Wikipedia sobre OLE DB, OLE DB é sucessor da Microsoft para ODBC, e fornece algumas características que você pode não ser capaz de fazer com ODBC, como acessar planilhas como fontes de banco de dados.

 3
Author: user10340, 2008-09-19 16:19:54

No website da Microsoft, mostra que o fornecedor nativo de OLEDB é aplicado directamente ao SQL server e outro fornecedor de OLEDB chamado OLEDB Provider para o ODBC aceder a outro banco de dados, tais como Sysbase, DB2 etc. Existem diferentes tipos de componentes sob o fornecedor OLEDB. Ver As consultas distribuídas no MSDN para mais informações.

 2
Author: FebWind, 2016-11-04 22:48:04

O ODBC só funciona para bases de dados relacionais, não pode funcionar com bases de dados não relacionais como ficheiros MS Excel. Onde o Olebd pode fazer tudo.

 0
Author: Md Shahriar, 2016-12-19 06:36:06

• Agosto de 2011: Microsoft desactualiza OLE DB ( A Microsoft está alinhada com o ODBC para o acesso de Dados Relacionais nativo)

• Outubro de 2018: Microsoft undeprecates OLE DB (a anunciar a nova versão do controlador OLE DB para o servidor SQL)

 0
Author: tibx, 2018-05-16 12:42:46
Para saber porque é que o M$ inventa o OLEDB, não se pode comparar o OLEDB com o ODBC. Em vez disso, você deve comparar OLEDB com DAO,RDO, ou ADO. Este último depende em grande parte do SQL. No entanto, OLEDB depende da COM. Mas ODBC já está lá há muitos anos, então há uma ponte OLEDB-ODBC para remediar isso. Acho que há uma grande imagem quando o M$ inventa o OLEDB.
 -2
Author: Scott Chu, 2016-09-07 04:21:59