Mesajlar Etiketlendi ‘SQL ile Excel Dosyasından Veri Okuma’

DTS Package ile veya Program kodlarımız içerisinden yapabileceğimiz gibi SQL SERVER üzerinden Daha önceki postda bahsettiğim

Linked Server yapısını Kullanarak Excel tablosu Üzerinden veri Okuyabiliriz;

Öncelikle bu sefer Kod ile Excel adındaki Linked Server’ımızı oluşuruyoruz.

sp_addlinkedserver 'Excel',
'Excel',
'Microsoft.Jet.OLEDB.4.0',
'c:\gurcan.xls',
NULL,
'Excel 8.0'

Ve Daha Sonra Son adıma geçip

SELECT * FROM OPENQUERY(Excel,'SELECT * FROM [Sheet1$]')

şeklinde sorgulayabiliyoruz.

Bu durumda yetkilerden kaynaklanan hatalar oluşmakta ve alacağınız hataları hemen yazayım;

*Cannot initialize the data source object of OLE DB provider “Microsoft.Jet.OLEDB.4.0” for linked server
*The OLE DB provider “Microsoft.Jet.OLEDB.4.0” for linked server “(null)” does not contain the table “Sheet1$”. The table either does not exist or the current user does not have permissions on that table.

Bu Durumda Öncelikle Başlat->Programlar->SQL SERVER->Configuration Tools->Surface Area Configuration->Surface Area Configuration for Features altındaki
“Ad Hoc Remote Queries”Seçeneğinde bulunan yanındaki “ENABLE OPENROWSET…. ” şeklindeki seçeneği işaretliyoruz ve Ok deyip kapatıyoruz.
Daha Sonra Bir Tane Query sayfası açıp

sp_configure 'remote query timeout', 0
go
reconfigure with override

go

kodunu çalıştırıyoruz.

Hatanız devam ediyorsa Yetki kısıtlamasını ortadan kaldırmak için

EXEC sp_addlinkedsrvlogin 'Excel',
'false',NULL,'ADMIN',NULL

scriptini çalıştırmalısınız.

Bunların sonucunda karşılaşacağınız hataların giderileceğini düşünüyorum.

Tabiki bunun Linked Server Kullanmadan daha kolay kullanımı yok mu?Tabiki var ve tek satırlık kod onuda veriyorum ki kulaklarım çınlamasın 🙂

select *  from openrowset('Microsoft.Jet.OLEDB.4.0', 'Excel 8.0;database=C:\gurcan.xls', [Sheet1$]);

Bu çerçevede bu sorguları genişletmeniz mümkün…Haydi Güle Güle kullanın;)