it-swarm-tr.com

OLE DB ve ODBC veri kaynakları arasındaki fark nedir?

Pivotcache hakkında bir MS Excel yardım makalesi okudum ve ne anlama geldiklerini merak ediyorum OLE DB ve ODBC sources

... Artık, öncelikle Microsoft Excel'in önceki sürümleriyle uyumluluk için var olan SQL özelliği yerine CommandText özelliğini kullanmalısınız. Her iki özelliği de kullanırsanız, CommandText özelliğinin değeri öncelikli olur.

OLE DB kaynakları için, CommandType özelliği, CommandText özelliğinin değerini açıklar.

ODBC sources için, CommandText özelliği tam olarak SQL özelliği gibi çalışır ve özelliği ayarlamak verilerin yenilenmesine neden olur ...

Kısa cevaplarınız için minnettarım.

165
Martin08

ADO'ya göre: ActiveX Veri Nesneleri , O'Reilly Media tarafından 2001'de yayınlanan Jason T. Roff'un bir kitabı ( Buradaki mükemmel şema), MOZILLA'nın söylediklerini tam olarak söylüyor.

(doğrudan kitabın 7. sayfasından)

  • ODBC sadece ilişkisel veritabanlarına erişim sağlar
  • OLE DB aşağıdaki özellikleri sunar
    • Biçiminden veya konumundan bağımsız olarak verilere erişim
  • ODBC veri kaynaklarına ve ODBC sürücülerine tam erişim

Öyleyse OLE DB, SQL tabanlı veri kaynaklarıyla etkileşime giriyormuş gibi görünüyor THRU, ODBC sürücü katmanı.

alt text

Bu görüntünün doğru olduğundan% 100 emin değilim. Emin değilim, iki bağlantı ADO.NET thru ADO'dir. _ C-api ve OLE DB, SQL tabanlı veri kaynağına ODBC ekler (çünkü bu şemada yazar OLE DB'nin ODBC'ye erişimi, ki bunun bir hata olduğuna inanıyorum).

142
bobobobo

ODBC: - Yalnızca ilişkisel veritabanları için (SQL Server, Oracle vb.)

OLE DB: - Hem ilişkisel hem de ilişkisel olmayan veritabanları için. (Oracle, SQL Server, Excel, ham dosyalar vb.)

54
MOZILLA

İşte benim anlayışım (yetkili olmayan):

ODBC, çoğu yazılım satıcısı tarafından desteklenen bir teknoloji-agnostik açık standarttır. OLEDB bir teknolojiye özel COM döneminden Microsoft'un API'si (COM, .NET'ten önce bir bileşen ve birlikte çalışabilirlik teknolojisiydi)

Bir noktada, Microsoft veri tüketicileriyle uyumlu olmak isteyen çeşitli veri sağlayıcıları (örneğin, Oracle vb.) Ürünleri için OLEDB sağlayıcıları geliştirdiler, ancak çoğu zaman OLEDB yalnızca Microsoft'un standartlarından biri olmaya devam ediyor. Şimdi, çoğu Microsoft veri kaynakları, esasen ODBC veri tüketicisiyle uyumluluk için, hem ODBC hem de OLEDB erişimine izin verir. Ayrıca, eğer istenirse ODBC veri kaynaklarına erişmek için OLEDB kullanmasına izin veren ODBC için OLEDB sağlayıcısı (sarıcı) bulunmaktadır.

Özellikler açısından OLEDB, ODBC'den esasen daha zengindir, ancak hepsinden-teke ve hepsine tek bir sendromdan muzdariptir (aşırı jenerik, karmaşık olmayan, tartışmasız).

Microsoft dışı dünyada ODBC tabanlı veri sağlayıcılar ve istemciler yaygın olarak kullanılır ve hiçbir yere gitmez.

Microsoft balonunun içinde OLEDB, söz konusu veri kaynağı için yerel taşıma katmanının (ör., MS SQL Server için TDS) ne olursa olsun, yerel .NET API'lerinin lehine bırakılmıştır.

41
zvolkov

ODBC ve OLE DB iki rakip veri erişim teknolojisidir. Özellikle SQL Server ile ilgili olarak, Microsoft, her ikisini de farklı zamanlarda Tercih Edilen Gelecek Yönleri olarak tanıtmıştır.

ODBC

ODBC, tablo benzeri verilere erişmek için endüstri çapında bir standart arayüzdür. Öncelikle veritabanları için geliştirilmiştir ve her biri bir alan koleksiyonunda gruplandırılmış kayıt koleksiyonlarında veri sunar. Her alanın, içerdiği veri türüne uygun kendi veri türü vardır. Her veritabanı satıcısı (Microsoft, Oracle, Postgres,…) kendi veritabanı için bir ODBC sürücüsü sağlar.

Ayrıca, veritabanı tabloları olmasa da, aynı şekilde verilere aynı şekilde erişilmesinin faydalı olduğu nesnelere yönelik ODBC sürücüler de vardır. Örnekler elektronik tablolar, CSV dosyaları ve sütunlu raporlardır.

OLE DB

OLE DB verilere erişim için bir Microsoft teknolojisidir. ODBC 'den farklı olarak, e-posta mesajları, web sayfaları, Word belgeleri ve dosya dizinleri gibi hem tablo hem de tablo benzeri olmayan verileri içerir. Ancak, nesne yönelimli olmaktan ziyade prosedür yönelimlidir ve veri kaynaklarına erişimin geliştirilmesi için oldukça zor bir arayüz olarak kabul edilir. Bunun üstesinden gelmek için ADO, OLE DB'nin üzerinde nesne yönelimli bir katman olacak ve onunla çalışmanın daha basit ve daha üst düzeyde - yine de çok güçlü olmasına rağmen - tasarlanacak şekilde tasarlandı. ADO’nun, belirli bir veri kaynağı türüne özgü özellikleri işlemek için kullanabilmesinin büyük avantajı, tüm veri kaynağı türlerine uygulanan özelliklere erişmek için kullanabildiğiniz kadar kolay. Bazı yetersiz tatmin edici en düşük ortak payda ile sınırlı değilsiniz.

Tüm veritabanlarında ODBC sürücüsü olsa da, hepsinde OLE DB sürücüsü yoktur. Ancak, OLE ile ODBC arasında, OLE DB benzeri bir şekilde erişmek istiyorsanız kullanılabilecek bir arayüz vardır. Bu arabirime MSDASQL (ODBC için Microsoft OLE DB sağlayıcısı) denir.

SQL Server Veri Erişim Teknolojileri

SQL Server (1) Microsoft tarafından yapıldığı ve (2) Microsoft veritabanı platformu, hem ODBC hem de OLE DB bunun için doğal bir uygun.

ODBC

Diğer tüm veritabanı platformlarının ODBC arayüzleri olduğundan, Microsoft'un SQL Server için bir tane sağlaması gerekiyordu. Buna ek olarak, Microsoft Access'teki orijinal varsayılan teknoloji olan DAO, tüm harici veri kaynaklarıyla konuşmanın standart yolu olarak ODBC kullanır. Bu, ODBC arabirimini olmazsa olmaz bir hale getirdi. SQL Server 2000 ile birlikte yayınlanan SQL Server için sürüm 6 ODBC sürücüsü hala buralarda. Sonraki sürümlerde ortaya çıkan yeni veri türlerini, bağlantı teknolojilerini, şifrelemeyi, HA/DR'yi işlemek için güncellenmiş sürümler piyasaya sürüldü. 09.07.2018 itibariyle en son sürüm 23.03.2018 tarihinde yayınlanan v13.1 “SQL Server için ODBC Sürücüsü” dür.

OLE DB

Bu, Microsoft’un 2002 - 2005 yılları arasında, beraberindeki ADO katmanıyla birlikte güçlü bir şekilde teşvik ettikleri kendi teknolojisidir. Açıkça bunun, tercih edilen veri erişim teknolojisi olacağını umuyorlardı. (Access 2002/2003'teki verilere erişmek için varsayılan yöntemi ADO bile yaptılar.) Ancak, bunun nihayetinde bunun birkaç nedenden dolayı gerçekleşmeyeceği anlaşıldı:

  1. Dünya Microsoft teknolojilerine ve ODBC'den uzaklaşmayacaktı;
  2. DAO/ODBC, ADO/OLE DB'den daha hızlıydı ve MS Access'e de tamamen entegre edildi, bu yüzden doğal bir ölümle ölmeyecekti;
  3. Özellikle ADO.NET tarafından Microsoft tarafından geliştirilen yeni teknolojiler de doğrudan ODBC ile konuşabiliyordu. ADO.NET doğrudan OLE DB ile de konuşabiliyordu (bu nedenle ADO bir durgun suda bırakılıyor), ancak (ADO'dan farklı olarak) yalnızca buna bağlı değildi.

Bu nedenlerden dolayı ve diğerleri , Microsoft aslında OLE DB'yi bir veri erişim teknolojisi olarak v11'den sonraki SQL Server sürümleri için (SQL Server 2012). Bu noktadan birkaç yıl önce, hem ODBC hem de OLE DB teknolojilerini destekleyen SQL Server Yerel İstemcisini üretiyor ve güncelliyorlardı. Ancak 2012 yılının sonlarında, SQL Server'da yerel ilişkisel veri erişimi için ODBC ile uyum sağlayacağını açıkladılar ve diğerlerini de aynı şeyi yapmaya teşvik ettiler. Ayrıca v11/SQL Server 2012'den sonra SQL Server'ın aktif olarak destek vermeyeceğini belirtti OLE DB!

Bu ilan bir protesto fırtınasına yol açtı. İnsanlar, MS'in neden aniden onları taahhüt etmek için harcadıkları bir teknolojiyi aniden kötüye kullandıklarını anlama konusunda kaybedildi. Ek olarak, SQL Server ile yakından bağlantılı MS yazılı uygulamalar olan SSAS/SSRS ve SSIS, tamamen veya kısmen OLE DB'ye bağımlıydı. Yine bir başka şikayet, OLE DB'nin ODBC 'e geri dönmeyi imkansız gibi görünen bazı arzulanan özelliklere sahip olmasıydı - sonuçta, OLE DB'nin birçok iyi noktası vardı.

Ekim 2017’de, Microsoft rahatladı ve resmen onaylanmadı OLE DB . Native Client 11'in mevcut özellik setine sahip olacak ve ayrıca çoklu alt ağ yük devretme ve TLS 1.2 desteği sağlayacak yeni bir sürücünün (MSOLEDBSQL) geldiğini duyurdular. Sürücü Mart 2018'de serbest bırakıldı.

18
marktwo

Çok temel düzeyde, bunlar farklı veri kaynakları (yani veritabanları) için yalnızca farklı API'lerdir. OLE DB daha yeni ve tartışmalı olarak daha iyi.

Her ikisinde de Wikipedia'da daha fazlasını okuyabilirsiniz:

  1. OLE DB
  2. ODBC

Yani ODBC sürücüsü ya da OLE DB sürücüsü kullanarak aynı veritabanına bağlanabilirsiniz. Bu durumlarda veritabanı davranışındaki fark, kitabınızın ne anlama geldiğidir.

6
Ilya Kochetov

Her ikisi de veri sağlayıcıdır (kodunuzun bir veri kaynağı ile konuşmak için kullanacağı API). 1998'de tanıtılan Oledb, ODBC (1992'de tanıtıldı) yerine geçti.

5
Arcturus

Tüm ayrıntılardan emin değilim, ancak benim anladığım kadarıyla OLE DB ve ODBC, tüm veritabanlarıyla uğraşmak zorunda kalmadan çeşitli veritabanı türlerine bağlanmak için kullanılabilen iki API'dir. her birinin uygulamaya özel detayları. OLE DB hakkındaki Wikipedia makalesine göre, OLE DB, Microsoft’un ODBC’nin halefidir ve elektronik tablolara veritabanı kaynakları olarak erişme gibi ODBC ile yapamayabileceğiniz özellikler.

3
user10340

Microsoft web sitesinde, yerel OLEDB sağlayıcısının SQL sunucusuna doğrudan ve SEDBase, DB2 vb. Gibi diğer Veritabanlarına erişmek için ODBC için OLEDB Sağlayıcısı adlı başka bir OLEDB sağlayıcısının uygulandığını göstermektedir. OLEDB Sağlayıcısı. Daha fazlası için MSDN'de Dağıtılmış Sorgular bölümüne bakın.

2
FebWind

• Ağustos, 2011: Microsoft OLE DB’yi kaldırıyor ( Microsoft, Yerel İlişkisel Veri Erişimi için ODBC ile Hizalanıyor) )

• Ekim, 2017: Microsoft undeprecates OLE DB ( SQL için OLE DB Sürücüsünün yeni sürümünün duyurulması) Sunuc )

2
tibx

ODBC yalnızca ilişkisel veritabanları için çalışır, Ms Excel dosyaları gibi ilişkisel olmayan veritabanlarıyla çalışamaz. Olebd'in her şeyi yapabildiği yer.

0
Md Shahriar