Makale Özeti

Farklı kaynaklarda (Oracle, Access, Excel, Text vb.) bulunan verilerimize SQL Server içerisinden OLEDB veya ODBC kullanarak ulaşabilir ve bu kaynaklar üzerinde sorgulama yapabiliriz. SQL Server bu dış kaynaklar ile iletişimi Linked Server aracı ile sağlamaktadır.

Makale

Farklı kaynaklarda (Oracle, Access, Excel, Text vb.) bulunan verilerimize SQL Server içerisinden OLEDB veya ODBC kullanarak ulaşabilir ve bu kaynaklar üzerinde sorgulama yapabiliriz. SQL Server bu dış kaynaklar ile iletişimi Linked Server aracı ile sağlamaktadır.

Ulaşmak istediğimiz kaynağa iki farklı yolla bağlanabiliriz. Birinci yol Management Server’dan oluşturulmuş arayüzü kullanmak, ikici yol da bu bağlantıyı sağlamak için SQL Serverın kendi kütüphanesinde bulunan sp_addlinkedserver saklı yordamınını kullanmaktır.

Saklı yordam(stored procedure) kullanarak linked server eklemek.

sp_addlinkedserver [ @server = ] ’server’ : Server Adı
[ , [ @srvproduct = ] ’product_name’ ]: Bağlanılacak ürün adı
[ , [ @provider = ] ’provider_name’ ] : Ara bağlantıyı sağlayacak nesnde.
[ , [ @datasrc = ] ’data_source’ ] : Veri kaynağı
[ , [ @location = ] ’location’ ] : Lokasyon
[ , [ @provstr = ] ’provider_string’ ] :Ara bağlantıyı sağlayacak nesne adı
[ , [ @catalog = ] ’catalog’ ] :Katalog adı.

Kod 1 : sp_addlinkedserver saklı yordamının kullanarak lined server kullanmak.

Manager Server’ da arayüz kullanarak eklemek.

Resim 1 : Manager server kullanarak linked server oluşturmak.

İlk örnek olarak SQL Server 2005’ te linked server ile excel’ e bağlanmak ile ilgili bir örnek yapalım.

EXEC master.dbo.sp_addlinkedserver
@server = N’ILLER_EXCEL’,
@srvproduct=N’Excel’,
@provider=N’Microsoft.Jet.OLEDB.4.0’,
@datasrc=N’E:\Documents and Settings\mehmetali.ecer\Desktop\Kitap1.xls’,
@provstr=N’Excel 8.0’
GO

Kod 1 : Saklı yordam ile SQL server ve excel arasında linked server kurmak.

Aynı işlemi Managğment serverdaki arayüzü kullanarak yapalım.

Resim 2 : Arayüz kullanarak SQL Server ile excel arasında linked server oluşturmak.

Dağıtık sunucumuzu ekledikten sonra Object Browser da Linked Server bölümünün altında ILLER_EXCEL isimli linked serverımızın referansını görebiliriz. Eklediğimiz serverın içerisinde bulunan tabloları görebilmek için aşağıdaki komut satırını çalıştırın.

EXECUTE SP_TABLES_EX ’ILLER_EXCEL’

Kod 3 : Bağlanılan verikümesinde bulunan tabloların gösterilmesi.

Örneğimizde bu komut sonucunda dönecek olan sonuç aşağıdaki gibidir.

Resim 3 : Bağlanılan excelde bulunan tablolar.

Tabloların içindeki kolonları görmek için de,

EXECUTE sp_columns_ex ILLER_EXCEL,Sayfa1$

Kod 4 : Bağlanılan verikümesinde bulunan bir tablo içerisindeki kolonların gösterilmesi.

 

Resim 4 : Bağlanılan excelde bulunan Sayfa1$1 sayfasında bulunan kolonlar.

Şimdide elimizdeki veriye SQL Serverda bulunan normal bir tabloymuş gibi sorgu cümlesi çalıştırabiliriz.

SELECT * FROM ILLER_EXCEL...Sayfa1$

Yukarıda gördüğünüz gibi bir excel dosyasına bağlandık, dataları aldık ve var olan datalar üzerinde sql cümlelerini kullandık.

Access ve metin dosyasına ulaşmak içinde aşağıdaki komut satırlarını kullanabilirsiniz.

EXEC master.dbo.sp_addlinkedserver
@server = N’NWIND2’,
@srvproduct=N’Access’,
@provider=N’Microsoft.Jet.OLEDB.4.0’,
@datasrc=N’E:\Documents and Settings\mehmetali.ecer\Desktop\Nwind.mdb’
GO

Kod 5 : Accesse bağlanma.

EXEC master.dbo.sp_addlinkedserver
@server = N’ILLER_TEXT’,
@srvproduct=N’Jet 4.0’,
@provider=N’Microsoft.Jet.OLEDB.4.0’,
@datasrc=N’E:\Documents and Settings\mehmetali.ecer\Desktop\ILLER’,
@provstr=N’Text’
GO

Kod 6 : Metin dosyasına bağlanma.

Kaynaklar

http://www.databasejournal.com/features/mssql/article.php/10894_3085211_1
Sql Server 2005 ve Veritabanı Programlara, Yaşar Gözüdeli
http://support.microsoft.com/kb/306397/
http://www.codeproject.com/aspnet/LikeDataStores.asp
http://www.aspfree.com/c/a/Microsoft-Access/Configuring-a-Linked-Microsoft-Access-Server-on-SQL-2005-Server/1/

İyi Çalışmalar
Mehmet Ali ECER
mehmetaliecer@gmail.com