-

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

Sql Server’da Job Oluşturma

Microsoft Sql server üzerinde otomatik  yapılmasını istediğimiz yedekleme, sorgu çalıştırma tarzı operasyonları programlayıp gerçekleştirebiliriz.Sql Server’da bu işlemleri  Sql server agent modülü yapar.

Object explorer->Sql Server Agent->New->Job  şeklinde ilerlediğimizde yeni bir job ekleriz.

Yeni bir job eklediğimizde karşımıza aşağıdaki gibi bir ekran gelir.Bu ekranda birkaç adımla job oluşturmuş oluruz.

job1

General tabında  job’ın adı gibi bilgileri doldurmalıyız.

Steps tabında.Job’a adım ekleriz.Bu adımlarda hangi veri tabanını kullanacağını “Database” bölümünde seçiyoruz, hangi işlemi yapacağını “Command” bölümünde belirliyoruz.

job2

 

Hangi veritabanı üzerinde işlem yapılması gerektiğini seçtikten sonra command böümüne sql sorguları ekleyebiliriz. Aşağıdaki örnek ekranda backup tablosunun belirli zamanlarda silinmesi ile ilgili komutu görebiliriz. Ayrıca birden fazla komut da ekleyebiliriz.

jo3Yapılması gereken komutu belirledikten sonra işlemin programını belirlemeliyiz. İstediğimiz işlem ne kadar sürede bir tekrarlanmalı,ne zaman başlayıp bitmeli gibi işlemleri Schedule tabında belirleriz. Aşağıdaki örnekte backup tablosunu temizleme işlemini ayda bir kere saat 3:00 da gerçekleşmesini istiyoruz.

job4

Bunlara ek olarak  Alerts tabı ile job’a alarm verdirebiliriz,Notifications tabı ile belirli zamanlarda e-mail atmasını isteyebiliriz.

Ayrıca Job’ın nezaman çalıştığı başarılı olup olmadığı gibi bilgileri Job’ın view history bölümünden takip edebiliriz.

job5