Test Aryasoft > News > SQL Server > Level 50 > SQL Server’da Linked Server Kullanımı

SQL Server’da Linked Server Kullanımı

Posted by: copy_zenx_wordpress_master
Category: Level 50, SQL Server

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;

  • Linked Server : Oluşturduğumuz Linked Server için bir isim belirlediğimiz alan.
  • Provider : Burada bağlanmak istediğiniz veri tabanı için bir provider seçmelisiniz. Biz SQL Server ile çalışacağımız için Microsoft OLE DB Provider for SQL Server seçeneğini seçiyoruz.
  • Product name : Bu kısıma istediğiniz ismi verebilirsiniz. Benim tavsiyem eğer farklı sunucudaki bir veri tabanı ile çalışıyorsanız onun sürümünü yazmanızdan yana olacaktır. Örn: MSSQL 2012 Standard
  • Data source : Bağlantı yapacağımız veri tabanı sunucusunun adresi
  • Provider String : Buraya bağlanmak istediğiniz diğer veri tabanının ya da Excel dosyasının bilgisini girebilirsiniz. Örn: Excel 97–2003 sürümleri arası için Excel 8.0 yazabilirsiniz.
  • Catalog : Bağlanmak istediğimiz veri tabanının adı.

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;

  • Be made without using a security context : Excel dosyası gibi herhangi bir authentication işlemi gerektirmeyen bağlantılarda kullanılır. Fakat farklı bir SQL Server ile çalışırken Not be made ile aynı şekilde çalışmaktadır ve hata almanıza sebep olabilir.
  • Be made using the login’s current security context : Bu seçenekte ise local login bilgileri ile uzakta olan sunucuya giriş yapmak için kullanılır. Örneğin eğer local sunucuda Windows Authentication seçeneği kullanılıyorsa uzak sunucuda da Windows Authentication seçeneğinde kullanılan bilgilerle giriş yapmayı deneyecektir.
  • Be made using this security context : Bu seçenekte ise remote login ve remote password alanına girilen bilgiler ile sunucuya giriş yapılacaktır. Burada girilen bilgiler karşıda bağlanılmaya çalışılan sunucuda mevcut değilse kullanıcı olmadığına dair bir hata ekranı karşınıza çıkar.

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

Size ve Veritabanlarınıza Yardımcı Olmak İçin Bekliyoruz!

Author: copy_zenx_wordpress_master