SQL Server’da Linked Server Kullanımı

SQL Server üzerinde farklı veri tabanlarını kullanarak işlem yapmak mümkündür. Aynı Server üzerinde bu işlemi kolayca yaparken network  üzerindeki farklı serverlara erişebilmek için Linked Server kullanılır.

Linked Server, aynı instance üzerinde farklı veri tabanları arası, farklı sunucularda bulunan veri tabanları arası veya farklı bir kaynaktan veri aktarımı yapılmak istendiğinde kurulan bir yapıdır.

Peki bu linked server tam olarak nedir?

Linked Server SQL Server ile uzaktaki bir veri kaynağından veri okumanıza ya da sorgu çalıştırmanıza olanak sağlayan bir özelliktir. A ve B veri tabanları arasındaki tablolarda sanki aynı veri tabanındaki tablolarda yapabildiğiniz gibi JOIN vb. işlemleri gerçekleştirebilirsiniz. Bahsettiğimiz veri tabanları aynı sunucu üzerinde olabildiği gibi farklı sunucularda da olabilir.

Linked server nasıl kullanılır?

Biz örneğimizi aynı sunucu üzerinde bulunan 2 farklı veri tabanı ile gerçekleştireceğiz. Örneğimiz için 2 tane veri tabanı oluşturalım birisi AdventureWorks2014 adında diğeri de Aryasoft adında olsun.

Veri tabanlarımızı oluşturduktan sonra sol menüdeki Server Objects menüsü altındaki Linked Servers seçeneğine sağ tıklayarak New Linked Server seçeneğine tıklayarak yeni bir Linked Server oluşturma ekranını açıyoruz.

Açılan pencere aşağıdaki gibi olacaktır. Burada Linked server kısmına bağlantımızın ismini giriyoruz. Local makinede çalıştığım için adres olarak yine localhost’a bağlanıyorum.

Siz uzaktaki bir veri tabanı ile çalışıyorsanız o zaman bağlantı adresinizi ona göre değiştirmeniz lazım.

Data Source alanı mutlaka doldurulmalıdır.

<Yukarıdaki alanları sırasıyla inceleyecek olursak;

Ardından Security sekmesine geçiş yapılır. Eğer aynı sunucu üzerinde işlem yapılacak ise  “Be made using login’s current security context” seçimi yapılır. Fakat bağlantı yapacağımız veri tabanı farklı bir sunucu da ise “Be made using this security context” alanını seçtikten sonra “Remote login” ve “With Password” alanlarını bağlantı yapacağımız veri tabanına erişim yetkisi olan bir kullanıcının bilgileri yazılmalıdır.

Security kısmında ayrıca Local login, Remote user ve Remote password alanlarının olduğunu farketmişsinizdir. Buradaki Local login bölümü sizin linked server oluşturduğunuz veri tabanında varolan kullanıcıları seçebileceğiniz/yazabileceğiniz alan. Remote user ve password bölümü ise uzaktaki erişmek istediğiniz sunucuda yer alan kullanıcı ve o kullanıcının şifresini gireceğiniz bölüm. Bizim iki veri tabanımız da localde olduğundan dolayı herhangi bir ayar yapmama gerek yok.

Buradaki seçenekleri yakından inceleyelecek olursak;

Bilgilerimizi doldurup kaydettikten sonra sorgu çalıştırmak için hazır hale gelmiş oluyoruz. Sorgu çalıştırmanın iki farklı yöntemi mevcut. Birisi OpenQuery dediğimiz yöntem diğeri ise Four-part Name adındaki yöntem. İlk olarak Four-part Name örneğine ardından OpenQuery örneğine bakalım ve makalemizi sonlandıralım.

Four-part Name :

SELECT Name FROM [LOCALSERVER].ECommerce.dbo.Product

OpenQuery :

SELECT * FROM Openquery(LOCALSERVER, ‘select * from Product’)

Son olarak Server Options sekmesine tıklatılır. Bağlantı için aşağıdaki resimde görülebileceği gibi üstteki beş adet seçeneği True olarak işaretlemek yeterli olacaktır.

Bu şekilde OK denir. Linked Servers altına verilen isimle oluşturulmuş olur.

Linked Server üzerinde nasıl sorgu yazılır?

Bir sorgu çekelim.

–openquery ile

Select * from Openquery([LSERVER], ‘select * from AdventureWorks2016.dbo.Person’)

–Köşeli parantez içine Linked Server’a verilen isim yazılamalıdır.

Select * from [LSERVER].AdventureWorks2016.dbo.Person

[vc_row full_width=”stretch_row” css=”.vc_custom_1505794887127{background-color: #2596be !important;}” gradient_animation=”#ffbc63,#d46b02″][vc_column][stm_cta button_color=”custom” button_custom_color=”#0077c2″ icon_custom_color=”#ffffff” button_icon_pos=”right” button_icon=”stmicon-chevron-right” style=”style_6″ link=”url:aryasoft.com.tr/contacts |title:İletişim”] Size ve Veritabanlarınıza Yardımcı Olmak İçin Bekliyoruz! [/stm_cta][/vc_column][/vc_row][vc_row css=”.vc_custom_1501845139892{margin-top: 50px !important;margin-bottom: 25px !important;}”][/vc_row]