Eu estava lendo um artigo de ajuda do MS Excel sobre pivotcache e me pergunto o que eles significam por fontes OLE DB e ODBC
... Você deve usar a propriedade CommandText em vez da propriedade SQL, que agora existe principalmente para compatibilidade com versões anteriores do Microsoft Excel. Se você usar as duas propriedades, o valor da propriedade CommandText terá precedência.
Para fontes OLE DB , a propriedade CommandType descreve o valor da propriedade CommandText.
Para origens ODBC , a propriedade CommandText funciona exatamente como a propriedade SQL e a configuração da propriedade faz com que os dados sejam atualizados ...
Eu realmente aprecio suas respostas curtas.
Respostas:
De acordo com o ADO: ActiveX Data Objects , um livro de Jason T. Roff, publicado pela O'Reilly Media em 2001 (excelente diagrama aqui), ele diz exatamente o que MOZILLA disse.
(diretamente da página 7 desse livro)
Portanto, parece que o OLE DB interage com fontes de dados baseadas em SQL através da camada de driver ODBC.
Não tenho 100% de certeza de que esta imagem esteja correta. As duas conexões das quais não tenho certeza são: ADO.NET através do ADO C-api e OLE DB através do ODBC para fonte de dados baseada em SQL (porque neste diagrama o autor não coloca o acesso do OLE DB através do ODBC, que acredito É um erro).
fonte
System.Data.SqlClient
lida com o protocolo TDS no código gerenciado, usando apenas o código nativo para lidar com a transmissão TCP / Named Pipes / etc pela rede. Para bancos de dados que não possuem um provedor gerenciado próprio, você pode usarSystem.Data.OleDb
para quebrar o OLE DB ou oSystem.Data.Odbc
ODBC, mas isso não é recomendado.ODBC: - Somente para bancos de dados relacionais (Sql Server, Oracle etc)
OLE DB: - Para bancos de dados relacionais e não relacionais. (Oracle, Sql-Server, Excel, arquivos brutos, etc.)
fonte
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/110093Aqui está o meu entendimento (não autoritativo):
ODBC é um padrão aberto independente de tecnologia suportado pela maioria dos fornecedores de software. OLEDB é uma API da Microsoft específica da tecnologia da era COM (a COM era uma tecnologia de componente e interoperabilidade antes do .NET)
Em algum momento, vários fornecedores de fontes de dados (por exemplo, Oracle etc.), dispostos a serem compatíveis com os consumidores de dados da Microsoft, desenvolveram fornecedores OLEDB para seus produtos, mas, na maioria das vezes, o OLEDB continua sendo um padrão exclusivo da Microsoft. Agora, a maioria das fontes de dados da Microsoft permite acesso ODBC e OLEDB, principalmente para compatibilidade com consumidores de dados ODBC herdados. Além disso, existe um provedor OLEDB (wrapper) para ODBC, que permite usar o OLEDB para acessar fontes de dados ODBC, se assim o desejar.
Em termos de recursos, o OLEDB é substancialmente mais rico que o ODBC, mas sofre da síndrome de um anel para governar todos (excessivamente genérica, complicada demais, sem opinião).
No mundo não pertencente à Microsoft, fornecedores e clientes de dados ODBC são amplamente utilizados e não vão a lugar algum.
Dentro da bolha da Microsoft, o OLEDB está sendo desativado em favor das APIs nativas do .NET construídas sobre qualquer camada de transporte nativa para essa fonte de dados (por exemplo, TDS para MS SQL Server).
fonte
ODBC e OLE DB são duas tecnologias concorrentes de acesso a dados. Especificamente em relação ao SQL Server, a Microsoft promoveu os dois como sua Direção preferida do futuro - embora em momentos diferentes.
ODBC
ODBC é uma interface padrão de todo o setor para acessar dados semelhantes a tabelas. Foi desenvolvido principalmente para bancos de dados e apresenta dados em coleções de registros, cada um dos quais agrupado em uma coleção de campos. Cada campo possui seu próprio tipo de dados adequado ao tipo de dados que contém. Cada fornecedor de banco de dados (Microsoft, Oracle, Postgres,…) fornece um driver ODBC para seu banco de dados.
Também existem drivers ODBC para objetos que, embora não sejam tabelas de banco de dados, são suficientemente semelhantes para acessar dados da mesma maneira. Exemplos são planilhas, arquivos CSV e relatórios em colunas.
OLE DB
OLE DB é uma tecnologia da Microsoft para acesso a dados. Ao contrário do ODBC, ele abrange dados semelhantes a tabelas e não semelhantes a tabelas, como mensagens de email, páginas da Web, documentos do Word e diretórios de arquivos. No entanto, é orientado a procedimentos e não a objetos e é considerado uma interface bastante difícil para desenvolver o acesso às fontes de dados. Para superar isso, o ADO foi projetado para ser uma camada orientada a objetos no topo do OLE DB e fornecer uma maneira mais simples e de nível superior - embora ainda muito poderosa - de trabalhar com ele. A grande vantagem do ADO é que você pode usá-lo para manipular propriedades específicas de 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. Você não está restrito a um menor denominador comum insatisfatório.
Embora todos os bancos de dados tenham drivers ODBC, nem todos eles possuem drivers OLE DB. No entanto, existe uma interface disponível entre o OLE e o ODBC que pode ser usada se você deseja acessá-los da maneira semelhante ao OLE DB. Essa interface é chamada MSDASQL (provedor Microsoft OLE DB para ODBC).
Tecnologias de acesso a dados do SQL Server
Como o SQL Server é (1) fabricado pela Microsoft e (2) a plataforma de banco de dados da Microsoft, o ODBC e o OLE DB são um ajuste natural para ele.
ODBC
Como todas as outras plataformas de banco de dados tinham interfaces ODBC, a Microsoft obviamente precisava fornecer uma para o SQL Server. Além disso, o DAO, a tecnologia padrão original no Microsoft Access, usa o ODBC como a maneira padrão de conversar com todas as fontes de dados externas. Isso fez da interface ODBC uma condição sine qua non. O driver ODBC da versão 6 para o SQL Server, lançado com o SQL Server 2000, ainda existe. Versões atualizadas foram lançadas para lidar com os novos tipos de dados, tecnologias de conexão, criptografia, HA / DR etc. que apareceram nas versões subseqüentes. Em 07/07/2018, a versão mais recente é a v13.1 “Driver ODBC para SQL Server”, lançada em 23/03/2018.
OLE DB
Essa é a tecnologia da Microsoft, que eles estavam promovendo fortemente entre 2002 e 2005, junto com a camada ADO que a acompanha. Evidentemente, eles esperavam que se tornasse a tecnologia de acesso a dados de sua escolha. (Eles até tornaram o ADO o método padrão para acessar dados no Access 2002/2003.) No entanto, eventualmente ficou claro que isso não aconteceria por vários motivos, como:
Por esses motivos e outros , a Microsoft realmente descontinuou o OLE DB como uma tecnologia de acesso a dados para versões do SQL Server após a v11 (SQL Server 2012). Por alguns anos antes desse ponto, eles estavam produzindo e atualizando o SQL Server Native Client, que suportava as tecnologias ODBC e OLE DB. No final de 2012, eles anunciaram que estariam alinhados ao ODBC para acessar dados relacionais nativos no SQL Server e incentivaram todos os demais a fazer o mesmo. Eles declararam ainda que as versões do SQL Server após a v11 / SQL Server 2012 não suportariam ativamente o OLE DB!
Este anúncio provocou uma tempestade de protestos. As pessoas não conseguiram entender por que a MS repentinamente deprecia uma tecnologia com a qual haviam passado anos se comprometendo. Além disso, o SSAS / SSRS e o SSIS, que eram aplicativos gravados em MS intimamente vinculados ao SQL Server, dependiam total ou parcialmente do OLE DB. Outra reclamação foi que o OLE DB tinha certos recursos desejáveis que pareciam impossíveis de transportar de volta ao ODBC - afinal, o OLE DB tinha muitos pontos positivos.
Em outubro de 2017, a Microsoft cedeu e oficialmente reprovou o OLE DB . Eles anunciaram a chegada iminente de um novo driver (MSOLEDBSQL) que teria o conjunto de recursos existente do Native Client 11 e também introduziria failover de multi-sub-rede e suporte a TLS 1.2. O driver foi lançado em março de 2018.
fonte
Em um nível muito básico, essas são apenas APIs diferentes para as diferentes fontes de dados (ou seja, bancos de dados). OLE DB é mais recente e sem dúvida melhor.
Você pode ler mais sobre ambos na Wikipedia:
Ou seja, você pode se conectar ao mesmo banco de dados usando um driver ODBC ou driver OLE DB. A diferença no comportamento do banco de dados nesses casos é a que seu livro se refere.
fonte
Ambos são provedores de dados (API que seu código usará para conversar com uma fonte de dados). O OLEDB, introduzido em 1998, deveria substituir o ODBC (introduzido em 1992)
fonte
• Agosto de 2011: a Microsoft descontinua o OLE DB (a Microsoft está se alinhando ao ODBC para Native Relational Data Access )
• outubro de 2017: a Microsoft reprova o OLE DB ( anunciando a nova versão do driver OLE DB para SQL Server )
fonte
Não tenho certeza de todos os detalhes, mas meu entendimento é que OLE DB e ODBC são duas APIs disponíveis para conexão com vários tipos de bancos de dados sem precisar lidar com todos os detalhes específicos de implementação de cada um. De acordo com o artigo da Wikipedia sobre OLE DB , o OLE DB é o sucessor da Microsoft para ODBC e fornece alguns recursos que talvez você não consiga fazer com ODBC, como acessar planilhas como fontes de banco de dados.
fonte
No site da Microsoft, mostra que o provedor OLEDB nativo é aplicado diretamente ao SQL Server e outro provedor OLEDB chamado OLEDB Provider for ODBC para acessar outro banco de dados, como Sysbase, DB2 etc. Existem diferentes tipos de componentes no OLEDB Provider. Consulte Consultas distribuídas no MSDN para obter mais informações.
fonte
O ODBC funciona apenas para bancos de dados relacionais, não pode funcionar com bancos de dados não relacionais, como arquivos do Excel. Onde o Olebd pode fazer tudo.
fonte
Para saber por que o M $ inventa o OLEDB, você não pode comparar o OLEDB com o ODBC. Em vez disso, você deve comparar o OLEDB com o DAO, RDO ou ADO. Este último depende em grande parte do SQL. No entanto, o OLEDB depende do COM. Mas o ODBC já existe há muitos anos, então há uma ponte OLEDB-ODBC para remediar isso. Eu acho que existe uma grande figura quando o M $ inventa o OLEDB.
fonte