Linked Server
Merhaba,
Bu yazı da sizlere mssql server da bulunan Linked Server özelliğinden bahsedeceğim.
Nasıl yapıldığından önce ne için kullanılır bize ne gibi avantajlar sağlar bunlardan bahsedelim.
Mssql server kurulu bir sunucu dan başka bir sunucudaki sql server , oracle ya da firebird…veritabanlarına erişip buralardan veri görüntüleme ihtiyacınızı karşılar.
Sadece select değil aynı zamanda update delete insert işlemlerini de yapabilirsiniz.(Ben genelde select ile kullandım)
Get Servet Çayır’s stories in your inbox
Join Medium for free to get updates from this writer.
Diyelim ki üretim kısmında kullandığınız ERP nizin mssql server üzerinde ve xxx.xxx.xx.xx ip li bir sunucuda olduğunu varsayalım. Muhasebe finans için ise ayrı bir uygulamanız var oda firebird veritabanı kullanıyor ve ayrı bir sunucuda barınıyor olsun.
- Üretim ERP içerisinde bir ekranda ya da rapor da muhasebe verilerini göstermek gerekiyor?
- Ya da bulunduğunuz firmanın birden fazla işletmesi bulunuyor.Farklı şehirlerde ya da ülkelerde ama ayrı sunucularda olsun. Üst yönetime sunulmak üzere ssrs ya da powerbi gibi bir ortamda bu farklı sunucularda ki verilerin birleştirip sunulması gerekiyor?
- Bu ve benzeri senaryolar için MSSQL SERVER dan örneğimizdeki firebird veritabanına erişim için link server tanımlayabilirsiniz. Ardından bir view yapıp mssql server içerisinden firebird veritabanı verilerinizi bu view ile görüntüleyebilir hale gelirsiniz. Bunun için ayrı bir uygulama ile verilerin bir yerden bir yere fiziksel olarak taşınmasına ihtiyaç kalmıyor süper değil mi?
- Yine başka bir sunucuda ki verilerin bir yerden bir yere taşınması gerekebilir. Örneğin product ortamında bulunan bazı tablolardaki verilerin developer ortamına alınması gerekiyor?
- Yine link server kullanarak bir insert into select sorgusu product sunucusundaki veriler developer ortamına kolaylıkla aktarılabilir.
- Bazen de aynı sorgu ekranında (Ssms kastediliyor) iki farklı sunucu daki verilerin karşılaştırılması görüntülenmesi gerekebilir bunun içinde işimize yarayacaktır.
- Yukarda benim birebir de yaşadığım örnekleri çoğaltmak mümkün tabi.
Şimdi isterseniz nasıl yapıldığına geçelim.
- Yukarıda ki örneği bilinçli olarak farklı teknolojilerden verdim. Çünkü mssql ile bağlanacağımız karşı sunucuda hangi veritabanı var ise (mssql değilse tabi) o veritabanının driver ının mssql sunucumuzda kurulu olması gerekmektedir. Firebird için firebird provider ya da oracle için oracle provider gibi. İnternetten ilgili driver bulunup indirilip kurulumu yapılacak. Bu konunun detayına girmiyorum. Sadece Firebird için indirip kurduğumuzda aşağıdaki sonuç ekran görüntüsünü paylaşıyorum.
- SSMS ile SQL’e bağlandıktan sonra Server Objects>Linked Servers’a sağ tıklanır ve New Linked Server denilir.
Bizim örneğimiz için Microsoft OLE DB Provider for ODBC Drivers seçiyoruz. Eğer MSSQL Server olan bir veritabanına bağlanmak isteseydik Microsoft OLE DB Driver for SQL Server seçecektik.
- General tabında aşağıdakiler bulunur.
- 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.
- 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.
- Catalog : Bağlanmak istediğimiz veri tabanının adı.
- Security kısmında ise bağlanılmak istenen veritabanında tanımlı bir kullanıcı bilgilerinin girilmesi gerekiyor.
Bu bilgilerden sonra oluşturmuş olduğumuz isimle Linked Server Server Objects altında Linked Servers altında görülmektedir.
- İki farklı şekilde veri çekebiliriz.
Select * from Openquery([LinkServerName], 'select * from TEST.dbo.Names')Select * from [LinkServerName].TEST.dbo.NamesLink Server nedir ne amaçla kullanılır gerçek senaryolarla anlatmaya çalıştım. Umarım faydalı bir makale olmuştur.






