Genel Bakış
OLE DB ve ODBC (OLE DB and ODBC), Excel'in SQL Server, Access, Oracle gibi veritabanlarına ve başka dış veri kaynaklarına bağlanmak için kullandığı iki standart veri erişim teknolojisidir. Excel bu teknolojiler sayesinde veriyi kopyalamadan çalışma kitabına çeker, sorgular ve tek tıkla yeniler. İkisinin de çalışması için bilgisayarda uygun bir sağlayıcı (OLE DB) ya da sürücü (ODBC) kurulu olmalıdır.
Provider= anahtarı OLE DB sağlayıcısına, Driver= ya da DSN= ise ODBC'ye işaret eder. İlk bağlantı için C2 hücresi OLE DB, sunucu adı SUNUCU01 sonucunu verir. Stok bağlantısı DSN kullandığı için D4 hücresi Yok gösterir; sunucu bilgisi DSN tanımının içinde saklanır, bağlantı dizesinde yer almaz.
Windows kimlik doğrulamalı ilk satırda E2 hücresi Driver={ODBC Driver 17 for SQL Server};Server=SUNUCU01;Database=Satis;Trusted_Connection=yes; dizesini üretir. SQL kimlik doğrulamalı ikinci satırda E3 hücresi Driver={ODBC Driver 17 for SQL Server};Server=SUNUCU02;Database=Muhasebe;UID=rapor_user; sonucunu verir. Parolayı (PWD=) bilerek dizeye eklemedik; parola gerektiğinde Excel bağlantı sırasında sizden ister, böylece parola dosyada açık metin olarak kalmaz.
E2 hücresi SELECT * FROM Siparisler WHERE SiparisTarihi BETWEEN '2024-01-01' AND '2024-03-31' komutunu üretir; E3 hücresindeki sorgu SELECT * FROM Faturalar WHERE FaturaTarihi BETWEEN '2024-04-01' AND '2024-06-30', E4 hücresindeki sorgu SELECT * FROM Sevkiyatlar WHERE SevkTarihi BETWEEN '2024-07-15' AND '2024-07-31' olur. Üretilen metni bağlantının Komut metni alanına yapıştırırsanız Excel yalnız o tarih aralığındaki kayıtları getirir. Access veritabanlarında tarihler tek tırnak yerine # işaretiyle yazılır; sorgu söz dizimi veri kaynağına göre değişir.
Nerede bulunur
Excel'de bu bağlantılara şu yollarla ulaşırsınız:- Veri > Veri Al ve Dönüştür > Veri Al > Diğer Kaynaklardan > OLE DB'den (Data > Get Data > From Other Sources > From OLE DB) ve ODBC'den (From ODBC): Power Query üzerinden bağlantı kurar. Bu yöntem Excel 2016 ve sonrasında, Microsoft 365'te ve Excel 2010/2013 için Power Query eklentisinde bulunur.
- Veri > Veri Al > Eski Sihirbazlar > Veri Bağlantı Sihirbazı (Data > Get Data > Legacy Wizards > From Data Connection Wizard) ve Microsoft Query'den (From Microsoft Query): Eski yöntemlerdir. Varsayılan olarak gizlidir; Dosya > Seçenekler > Veri (File > Options > Data) bölümünde ilgili eski sihirbaz seçeneklerini işaretleyerek görünür hale getirirsiniz.
- Veri > Sorgular ve Bağlantılar (Data > Queries & Connections): Kitaptaki bağlantıları listeler. Bağlantıya sağ tıklayıp Özellikler (Properties) seçerek bağlantı dizesini ve yenileme ayarlarını görürsünüz.
- ODBC veri kaynaklarını (DSN) tanımlamak için Windows'ta ODBC Veri Kaynakları (ODBC Data Sources) aracı kullanılır; 32 bit ve 64 bit sürümleri ayrıdır.
OLE DB ile ODBC arasındaki fark
Her ikisi de Excel ile veri kaynağı arasında aracı katmandır, ancak yapıları farklıdır:- OLE DB: Microsoft'un COM tabanlı veri erişim arayüzüdür. Bağlantı dizesinde Provider ile bir sağlayıcı adı verilir. Örnekler: MSOLEDBSQL (SQL Server için Microsoft OLE DB Driver), Microsoft.ACE.OLEDB.12.0 (Access ve Excel dosyaları için). OLE DB yalnız ilişkisel veritabanlarına değil, ilişkisel olmayan kaynaklara da erişebilir.
- ODBC: Sektör genelinde kullanılan, işletim sisteminden bağımsız tasarlanmış bir standarttır. Bağlantı dizesinde Driver ile bir sürücü adı ya da DSN ile önceden tanımlı bir veri kaynağı adı verilir. Birçok veritabanı üreticisi kendi ODBC sürücüsünü sunar.
- Birlikte kullanım: Yalnız ODBC sürücüsü bulunan bir kaynağa OLE DB üzerinden erişmek için OLE DB Provider for ODBC Drivers (MSDASQL) sağlayıcısı aracılık eder.
Nasıl kullanılır
ODBC kaynağına Power Query ile bağlanmak için şu adımları izleyin:- Veri > Veri Al > Diğer Kaynaklardan > ODBC'den komutunu seçin.
- Açılan pencerede listeden bir DSN seçin ya da Veri kaynağı adı (DSN) yerine bağlantı dizesini Gelişmiş seçenekler (Advanced options) bölümüne yazın. İsterseniz bir SQL deyimi de verebilirsiniz.
- İstenirse Windows, Veritabanı ya da Varsayılan veya Özel kimlik bilgilerinizi girin.
- Gezgin (Navigator) penceresinden tabloyu seçin; Yükle (Load) ile sayfaya aktarın ya da Veriyi Dönüştür (Transform Data) ile Power Query düzenleyicisinde şekillendirin.
- Veri değiştiğinde Veri > Tümünü Yenile (Data > Refresh All) ile güncelleyin.
Bağlantı dizesi ve güvenlik
Bağlantı dizesi noktalı virgülle ayrılmış anahtar=değer çiftlerinden oluşur. Tipik anahtarlar şunlardır:- Provider: OLE DB sağlayıcısının adı.
- Driver: ODBC sürücüsünün adı; süslü parantez içinde yazılır.
- DSN: Önceden tanımlı ODBC veri kaynağı adı.
- Server ve Database: Sunucu ve veritabanı adı. Access dosyalarında Data Source ile dosya yolu verilir.
- Trusted_Connection=yes: Windows kimlik doğrulamasını kullanır.
- UID ve PWD: Kullanıcı adı ve parola (SQL kimlik doğrulaması).
1. Bağlantı dizesinden teknolojiyi ve sunucuyu ayıklama
Kitabınızdaki bağlantı dizelerini B sütununa yazın. C sütununda dizenin OLE DB mi ODBC mi olduğunu, D sütununda ise Server= anahtarından sunucu adını bulun. C2 ve D2 hücrelerine formülleri yazıp aşağı doğru kopyalayın.OLE DB ve ODBC
Formülünü incelemek için bir hücre seçin.| A | B | C | D | |
|---|---|---|---|---|
| 1 | Bağlantı Adı | Bağlantı Dizesi | Teknoloji | Sunucu |
| 2 | Satış SQL | Provider=MSOLEDBSQL;Server=SUNUCU01;Database=Satis;Trusted_Connection=yes; | OLE DB | SUNUCU01 |
| 3 | Muhasebe | Driver={ODBC Driver 17 for SQL Server};Server=SUNUCU02;Database=Muhasebe;Trusted_Connection=yes; | ODBC | SUNUCU02 |
| 4 | Stok | DSN=StokDB;UID=okuyucu; | ODBC | Yok |
| 5 | Personel Access | Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Veri\Personel.accdb; | OLE DB | Yok |
| 6 | Üretim Oracle | Driver={Oracle in OraClient19};Dbq=URETIM; | ODBC | Yok |
Bağlantı EnvanteriExcelDepo v1.0.0
2. ODBC bağlantı dizesi oluşturma
Sunucu, veritabanı ve kimlik doğrulama türünü ayrı sütunlara yazın. E2 hücresindeki formül, kimlik doğrulama Windows ise Trusted_Connection=yes, SQL ise UID= ekleyerek ODBC bağlantı dizesini üretir. Dizeyi Veri > Veri Al > Diğer Kaynaklardan > ODBC'den penceresindeki Gelişmiş seçenekler bölümüne yapıştırabilirsiniz.OLE DB ve ODBC
Formülünü incelemek için bir hücre seçin.| A | B | C | D | E | |
|---|---|---|---|---|---|
| 1 | Sunucu | Veritabanı | Kimlik Doğrulama | Kullanıcı Adı | Bağlantı Dizesi |
| 2 | SUNUCU01 | Satis | Windows | - | Driver={ODBC Driver 17 for SQL Server};Server=SUNUCU01;Database=Satis;Trusted_Connection=yes; |
| 3 | SUNUCU02 | Muhasebe | SQL | rapor_user | Driver={ODBC Driver 17 for SQL Server};Server=SUNUCU02;Database=Muhasebe;UID=rapor_user; |
| 4 | IZMIR-SQL | Depo | Windows | - | Driver={ODBC Driver 17 for SQL Server};Server=IZMIR-SQL;Database=Depo;Trusted_Connection=yes; |
| 5 | ANKARA-SQL | Personel | SQL | ik_okuyucu | Driver={ODBC Driver 17 for SQL Server};Server=ANKARA-SQL;Database=Personel;UID=ik_okuyucu; |
Dizge OluşturucuExcelDepo v1.0.0
3. Tarih aralığı için SQL komut metni hazırlama
Bağlantı özelliklerindeki Komut metni (Command text) alanına ya da ODBC penceresindeki SQL deyimi kutusuna yazılacak sorguyu hücrelerdeki tablo adı ve tarihlerden üretin. Tarihleri YIL-AA-GG biçiminde (ISO) yazmak, sunucunun bölgesel ayarlarından bağımsız çalışmasını sağlar. E2 hücresine formülü yazıp aşağı kopyalayın.OLE DB ve ODBC
Formülünü incelemek için bir hücre seçin.| A | B | C | D | E | |
|---|---|---|---|---|---|
| 1 | Tablo | Tarih Alanı | Başlangıç | Bitiş | SQL Sorgusu |
| 2 | Siparisler | SiparisTarihi | 01.01.2024 | 31.03.2024 | SELECT * FROM Siparisler WHERE SiparisTarihi BETWEEN '2024-01-01' AND '2024-03-31' |
| 3 | Faturalar | FaturaTarihi | 01.04.2024 | 30.06.2024 | SELECT * FROM Faturalar WHERE FaturaTarihi BETWEEN '2024-04-01' AND '2024-06-30' |
| 4 | Sevkiyatlar | SevkTarihi | 15.07.2024 | 31.07.2024 | SELECT * FROM Sevkiyatlar WHERE SevkTarihi BETWEEN '2024-07-15' AND '2024-07-31' |
SQL KomutlarıExcelDepo v1.0.0
Kullanırken dikkat edin
- 32 bit ve 64 bit uyumu: Excel'in bit sürümü ile sürücünün ya da sağlayıcının bit sürümü aynı olmalıdır. 64 bit Excel yalnız 64 bit sürücüleri görür. ODBC Veri Kaynakları aracının 32 bit ve 64 bit sürümleri ayrı DSN listeleri tutar; DSN'i yanlış sürümde tanımlarsanız Excel onu bulamaz. Microsoft.ACE.OLEDB.12.0 sağlayıcısının 32 bit ve 64 bit sürümlerini aynı bilgisayarda birlikte kurmak da sorun çıkarabilir.
- Sürücü ya da sağlayıcı bulunamadı hatası: Dosyayı başka bir bilgisayarda açtığınızda aynı sürücü kurulu değilse bağlantı yenilenmez. Bağlantıyı paylaştığınız kişilerde de aynı sürücünün, aynı DSN adıyla ya da DSN'siz bağlantı dizesiyle erişilebilir olduğundan emin olun. DSN'siz (Driver= ile yazılan) bağlantılar dosyanın taşınmasını kolaylaştırır.
- Parola ve kimlik bilgisi güvenliği: Bağlantı dizesine yazdığınız PWD= değeri dosyada okunabilir biçimde kalabilir. Gerektiğinde Windows kimlik doğrulamasını, ya da Veri Kaynağı Ayarları (Data Source Settings) penceresinden yönetilen kimlik bilgilerini tercih edin. Dosyayı paylaşmadan önce Veri > Sorgular ve Bağlantılar bölümünden bağlantı özelliklerini gözden geçirin.
- Yenileme ve performans: Çok büyük tabloları sayfaya yüklemek yerine sorguda sütun ve satır sayısını SQL ile sınırlayın. Excel çalışma sayfası sınırı 1.048.576 satırdır; daha büyük veri için veri modeline (Data Model) yükleyin. Arka planda yenileme açıksa Excel'i kullanmaya devam edebilirsiniz, ancak birden fazla bağlantı sırayla yenilenecekse bağlantı sırasına dikkat edin.
- VBA ile bağlantıları yönetme: VBA'da kitaptaki bağlantılar ThisWorkbook.Connections koleksiyonunda bulunur. Her WorkbookConnection nesnesinin Type özelliği bağlantının OLE DB ya da ODBC olduğunu bildirir; ayrıntılar OLEDBConnection ve ODBCConnection nesnelerinde tutulur. Bağlantı dizesi Connection özelliğinde, SQL deyimi CommandText özelliğinde yer alır; yenilemek için Refresh yöntemi kullanılır.
- İlgili konular: Veri Al ve Dönüştür (Power Query), Sorgular ve Bağlantılar bölmesi, Veri Kaynağı Ayarları, Microsoft Query, Veri Modeli, Özet Tablo, Tümünü Yenile, Çalışma Kitabı Bağlantıları, VBA'da WorkbookConnection, OLEDBConnection, ODBCConnection ve QueryTable nesneleri. Formül tarafında bağlantı dizelerini ayrıştırmak için EĞERHATA, MBUL, PARÇAAL, SAĞDAN, YIL, AY ve GÜN işlevleri kullanılır.