Saya membaca artikel bantuan MS Excel tentang pivotcache dan bertanya-tanya apa yang mereka maksud dengan sumber OLE DB dan ODBC
... Anda harus menggunakan properti CommandText alih-alih properti SQL, yang sekarang ada terutama untuk kompatibilitas dengan versi Microsoft Excel yang lebih lama. Jika Anda menggunakan kedua properti, nilai properti CommandText diutamakan.
Untuk sumber OLE DB , properti CommandType menjelaskan nilai properti CommandText.
Untuk sumber ODBC , properti CommandText berfungsi persis seperti properti SQL, dan pengaturan properti menyebabkan data menjadi segar ...
Saya sangat menghargai jawaban singkat Anda.
Jawaban:
Menurut ADO: ActiveX Data Objects , sebuah buku karya Jason T. Roff, yang diterbitkan oleh O'Reilly Media pada tahun 2001 (diagram yang sangat baik di sini), ia mengatakan dengan tepat apa yang dikatakan MOZILLA.
(langsung dari halaman 7 buku itu)
Jadi tampaknya OLE DB berinteraksi dengan sumber data berbasis SQL melalui lapisan driver ODBC.
Saya tidak 100% yakin gambar ini benar. Dua koneksi yang saya tidak yakin tentang adalah ADO.NET melalui ADO C-api, dan OLE DB melalui ODBC ke sumber data berbasis SQL (karena dalam diagram ini penulis tidak menempatkan akses OLE DB melalui ODBC, yang saya percaya adalah sebuah kesalahan).
sumber
System.Data.SqlClient
menangani protokol TDS dalam kode terkelola, hanya menggunakan kode asli untuk menangani transmisi TCP / Named Pipes / etc melalui jaringan. Untuk database yang tidak memiliki penyedia terkelola sendiri, Anda bisa menggunakanSystem.Data.OleDb
untuk membungkus OLE DB atauSystem.Data.Odbc
untuk membungkus ODBC, tetapi tidak disarankan.ODBC: - Hanya untuk database relasional (Sql Server, Oracle dll)
OLE DB: - Untuk basis data relasional dan non-relasional. (Oracle, Sql-Server, Excel, file mentah, dll)
sumber
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/110093Inilah pemahaman saya (non-otoritatif):
ODBC adalah standar terbuka teknologi-agnostik yang didukung oleh sebagian besar vendor perangkat lunak. OLEDB adalah API Microsoft khusus teknologi dari era COM (COM adalah komponen dan teknologi interoperabilitas sebelum .NET)
Di beberapa titik, berbagai vendor data vendor (misalnya Oracle, dll.), Yang bersedia kompatibel dengan konsumen data Microsoft, mengembangkan penyedia OLEDB untuk produk mereka, tetapi sebagian besar OLEDB tetap menjadi standar khusus Microsoft. Sekarang, sebagian besar sumber data Microsoft memungkinkan akses ODBC dan OLEDB, terutama untuk kompatibilitas dengan konsumen data ODBC lama. Juga, ada penyedia OLEDB (pembungkus) untuk ODBC yang memungkinkan seseorang untuk menggunakan OLEDB untuk mengakses sumber data ODBC jika diinginkan.
Dalam hal fitur OLEDB secara substansial lebih kaya daripada ODBC tetapi menderita sindrom satu-cincin-ke-aturan-mereka-semua (terlalu umum, terlalu rumit, tidak berpendapat).
Di dunia non-Microsoft, penyedia dan klien data berbasis ODBC banyak digunakan dan tidak akan ke mana-mana.
Di dalam Microsoft bubble OLEDB dihapus secara bertahap untuk mendukung .NET API asli dibangun di atas apa pun lapisan transport asli untuk sumber data tersebut (misalnya TDS untuk MS SQL Server).
sumber
ODBC dan OLE DB adalah dua teknologi akses data yang bersaing. Khusus mengenai SQL Server, Microsoft telah mempromosikan keduanya sebagai Arah Pilihan Masa Depan mereka - meskipun pada waktu yang berbeda.
ODBC
ODBC adalah antarmuka standar industri untuk mengakses data seperti tabel. Ini terutama dikembangkan untuk database dan menyajikan data dalam koleksi catatan, yang masing-masing dikelompokkan ke dalam kumpulan bidang. Setiap bidang memiliki tipe data sendiri yang cocok dengan jenis data yang dikandungnya. Setiap vendor basis data (Microsoft, Oracle, Postgres, ...) memasok driver ODBC untuk basis data mereka.
Ada juga driver ODBC untuk objek yang, meskipun mereka bukan tabel database, cukup mirip bahwa mengakses data dengan cara yang sama berguna. Contohnya adalah spreadsheet, file CSV, dan laporan kolom.
OLE DB
OLE DB adalah teknologi Microsoft untuk akses ke data. Tidak seperti ODBC, ia mencakup data seperti tabel dan non-tabel seperti pesan email, halaman web, dokumen Word, dan direktori file. Namun, ini lebih berorientasi pada prosedur daripada berorientasi objek dan dianggap sebagai antarmuka yang agak sulit untuk mengembangkan akses ke sumber data. Untuk mengatasinya, ADO dirancang untuk menjadi lapisan berorientasi objek di atas OLE DB dan untuk memberikan cara yang lebih sederhana dan tingkat yang lebih tinggi - meskipun masih sangat kuat - untuk bekerja dengannya. Keuntungan besar ADO adalah Anda dapat menggunakannya untuk memanipulasi properti yang spesifik untuk jenis sumber data tertentu, semudah Anda menggunakannya untuk mengakses properti yang berlaku untuk semua jenis sumber data. Anda tidak terbatas pada beberapa penyebut umum terendah yang tidak memuaskan.
Sementara semua database memiliki driver ODBC, mereka tidak semua memiliki driver OLE DB. Namun ada antarmuka yang tersedia antara OLE dan ODBC yang dapat digunakan jika Anda ingin mengaksesnya dengan cara seperti OLE DB. Antarmuka ini disebut MSDASQL (Microsoft OLE DB provider untuk ODBC).
Teknologi Akses Data SQL Server
Sejak SQL Server adalah (1) yang dibuat oleh Microsoft, dan (2) yang platform database Microsoft, baik ODBC dan OLE DB adalah cocok alami untuk itu.
ODBC
Karena semua platform database lain memiliki antarmuka ODBC, Microsoft jelas harus menyediakan satu untuk SQL Server. Selain itu, DAO, teknologi default asli di Microsoft Access, menggunakan ODBC sebagai cara standar untuk berbicara dengan semua sumber data eksternal. Ini membuat antarmuka ODBC menjadi sine qua non. Pengandar ODBC versi 6 untuk SQL Server, dirilis dengan SQL Server 2000, masih ada. Versi terbaru telah dirilis untuk menangani tipe data baru, teknologi koneksi, enkripsi, HA / DR dll. Yang telah muncul dengan rilis berikutnya. Pada 09/07/2018 rilis terbaru adalah v13.1 "ODBC Driver untuk SQL Server", dirilis pada 23/03/2018.
OLE DB
Ini adalah teknologi Microsoft sendiri, yang mereka promosikan dengan kuat dari sekitar tahun 2002 - 2005, bersama dengan lapisan ADO yang menyertainya. Mereka jelas berharap bahwa itu akan menjadi teknologi akses data pilihan. (Mereka bahkan menjadikan ADO metode default untuk mengakses data di Access 2002/2003.) Namun, akhirnya menjadi jelas bahwa ini tidak akan terjadi karena sejumlah alasan, seperti:
Untuk alasan ini dan lainnya , Microsoft sebenarnya tidak lagi menggunakan OLE DB sebagai teknologi akses data untuk rilis SQL Server setelah v11 (SQL Server 2012). Selama beberapa tahun sebelum titik ini, mereka telah memproduksi dan memperbarui SQL Server Native Client, yang mendukung teknologi ODBC dan OLE DB. Namun pada akhir 2012, mereka mengumumkan bahwa mereka akan menyelaraskan dengan ODBC untuk akses data relasional asli dalam SQL Server, dan mendorong semua orang untuk melakukan hal yang sama. Mereka lebih lanjut menyatakan bahwa rilis SQL Server setelah v11 / SQL Server 2012 akan secara aktif tidak mendukung OLE DB!
Pengumuman ini memicu badai protes. Orang-orang bingung untuk memahami mengapa MS tiba-tiba mencela teknologi yang telah mereka habiskan bertahun-tahun untuk membuat mereka berkomitmen. Selain itu, SSAS / SSRS dan SSIS, yang merupakan aplikasi yang ditulis MS yang terkait erat dengan SQL Server, seluruhnya atau sebagian bergantung pada OLE DB. Namun keluhan lain adalah bahwa OLE DB memiliki fitur yang diinginkan tertentu yang tampaknya tidak mungkin untuk kembali ke ODBC - lagipula, OLE DB memiliki banyak poin bagus.
Pada bulan Oktober 2017, Microsoft mengalah dan secara resmi membatalkan OLE DB . Mereka mengumumkan kedatangan driver baru (MSOLEDBSQL) dalam waktu dekat yang akan memiliki set fitur yang ada dari Native Client 11 dan juga akan memperkenalkan multi-subnet failover dan dukungan TLS 1.2. Sopir itu dirilis pada Maret 2018.
sumber
Pada tingkat yang sangat mendasar, itu hanyalah API yang berbeda untuk sumber data yang berbeda (yaitu basis data). OLE DB lebih baru dan bisa dibilang lebih baik.
Anda dapat membaca lebih lanjut tentang keduanya di Wikipedia:
Yaitu Anda bisa terhubung ke database yang sama menggunakan driver ODBC atau driver OLE DB. Perbedaan dalam perilaku basis data dalam kasus-kasus tersebut adalah apa yang dirujuk oleh buku Anda.
sumber
Keduanya adalah penyedia data (API yang akan digunakan kode Anda untuk berbicara dengan sumber data). Oledb yang diperkenalkan pada tahun 1998 dimaksudkan sebagai pengganti ODBC (diperkenalkan pada tahun 1992)
sumber
• Agustus 2011: Microsoft menolak OLE DB ( Microsoft menyelaraskan dengan ODBC untuk Akses Data Relasional Asli )
• Oktober, 2017: Microsoft tidak menghargai OLE DB ( Mengumumkan rilis baru Driver OLE DB untuk SQL Server )
sumber
Saya tidak yakin dengan semua detail, tetapi pemahaman saya adalah bahwa OLE DB dan ODBC adalah dua API yang tersedia untuk terhubung ke berbagai jenis database tanpa harus berurusan dengan semua detail implementasi spesifik dari masing-masing. Menurut artikel Wikipedia tentang OLE DB , OLE DB adalah penerus Microsoft untuk ODBC, dan menyediakan beberapa fitur yang Anda mungkin tidak dapat lakukan dengan ODBC seperti mengakses spreadsheet sebagai sumber basis data.
sumber
Di situs web Microsoft, ini menunjukkan bahwa penyedia OLEDB asli diterapkan ke server SQL secara langsung dan penyedia OLEDB lain yang disebut Penyedia OLEDB untuk ODBC untuk mengakses Database lain, seperti Sysbase, DB2 dll. Ada berbagai jenis komponen di bawah Penyedia OLEDB. Lihat Kueri Terdistribusi di MSDN untuk lebih lanjut.
sumber
ODBC hanya berfungsi untuk database relasional, ia tidak dapat bekerja dengan database non-relasional seperti file Ms Excel. Di mana Olebd bisa melakukan segalanya.
sumber
Untuk mengetahui mengapa M $ menciptakan OLEDB, Anda tidak dapat membandingkan OLEDB dengan ODBC. Sebagai gantinya, Anda harus membandingkan OLEDB dengan DAO, RDO, atau ADO. Yang terakhir ini sebagian besar bergantung pada SQL. Namun, OLEDB bergantung pada COM. Tapi ODBC sudah ada bertahun-tahun, jadi ada jembatan OLEDB-ODBC untuk memperbaiki ini. Saya pikir ada gambaran besar ketika M $ menemukan OLEDB.
sumber