-

Sql Server’da Linked Server

Linked server ile belirli veri kaynaklarını Sql Server’a bağlayarak iki ortamın haberleşmesini sağlayabiliriz.Bu veri kaynakları text dosyaları, excel gibi dosya türleri olabildiği gibi access ve oracle gibi veri tabanları da olabilir.

Aşağıda linked server konfigürasyonunu görebiliriz:

IC62068

Linked server  kullanarak bağlantı kurmak için önceden eklenmiş linked serverlarımız olmalıdır.Linked server eklerken object explorer penceresinde “linked server” a sağ tıklayıp “add  new linked server” diyerek ekleyebiliriz.Yeni linked server eklerken karşımıza gelen ekranlar aşağıdaki gibidir:

linkedServer1

Provider:Sql serverı bağlayacağımız veri tabanı

Product name:Oracle veri tabanına bağlanılacaksa “Oracle”,sqle bağlanılacaksa “Sql” yazılır.

Datasource:Bağlacak server adı ya da Ip si

Catalog:Bağlanıcak serverdaki veritabanı  dır.

Security tabı:

LinkedServer2

Aynı serverda işlem yapılacaksa “Be made using the login’s current security context” seçilebilir başka bir servera bağlanılacaksa “be made using the security contex” seçilerek kullanıcı adı ve şifre girilir.

Bu işlemleri tamamladıktan sonra linked serverı eklemiş oluruz.

İkinci yol olarak sp_addlinkedserver stored proc ile gerekli parametreleri vererek de linked server ekleyebiliriz.

Linked server ekledikten sonra uzaktaki sunucuya bağlanıp sorgu çalıştırabiliriz.Openquery kullanarak uzaktaki sunucu üzerinde işlem gerçekleştirebiliriz.

Syntax:

OPENQUERY ( linked_server ,’query’ ) şeklindedir.

linked_server:eklediğimiz linked serverın adı

‘query’:sunucuya bağlandıktan sonra veritabanı üzerinde yapmak istediğimiz işlemdir.

Örnek update işlemi:

UPDATE OPENQUERY (OracleSvr, ‘SELECT name FROM joe.titles WHERE id = 101′)

SET name = ‘ADifferentName’;

Örnek insert işlemi:

INSERT OPENQUERY (OracleSvr, ‘SELECT name FROM joe.titles’)
VALUES (‘NewTitle’);

Örnek delete işlemi:

DELETE OPENQUERY (OracleSvr, ‘SELECT name FROM joe.titles WHERE name = ”NewTitle”’);

Aşağıdaki örnekte oracle daki bir metoda parametre vererek nasıl kullanabileceğimizi görebiliriz:

DECLARE @AccountCode NVARCHAR(30)
declare @UserName NVARCHAR(30)

SET @AccountCode = ’123′ ;
SET @UserName = ‘der’;

DECLARE @TSQL varchar(255)
SELECT @TSQL = ‘SELECT * FROM OPENQUERY(linkedserverName,”SELECT OracleFunction(””’ + @AccountCode + ””’, ””’ + @UserName + ””’) from dual”)’
EXEC (@TSQL)

Kaynaklar:

[1]  http://technet.microsoft.com

[2]  http://sqlserverplanet.com

Category: Sql

Your email address will not be published. Required fields are marked *

*