SQL Server’dan Oracle’a bağlanacak bir Linked Server tanımlamak

Bazı durumlarda SQL Server üzerinde bulunan bir veritabanının Oracle veritabanından veri çekme ihtiyacı ortaya çıkabilir.

 

İlk olarak oracle tarafında ilgili bir kullanıcının oluşturulur. Eğer SQL Server’ınızın bulunduğu sunucuda Oracle Client yüklü değilse gerekli kurulum yapılır. Oracle tarafında oluşturulan kullanıcının kullanacağı tns bilgisi client’ın yüklü olduğu path’te (genellikle bu şekilde olur -> C:\app\product\11.2.0\client_1\network\admin) tnsnames.ora dosyasına kaydedilir. Tnsnames.ora dosyasına kaydetmenize izin vermezse notepad’i run as admintrator ile açtıktan sonra  File->Open ile yukarıda path’ini belirttiğim  tnsnames.ora dosyasını açmanız gerekir.

 

Daha sonra aşağıdaki script yardımıyla bu işlemi yapabilirsiniz.

 

myUser SQL Server tarafında linked server’ı kullanacak sql login
Xsource Tnsnames.ora dosyasına kaydettiğiniz tns’e verdiğiniz isim
XServer Linked server’ın ismi
oracleuser Oracle tarafında oluşturulan kullanıcı
oracleuserşifre Oracle tarafında oluşturulan kullanıcının şifresi
serverName\InstanceName SQLIntance’a nasıl bağlanıyorsanız bu kısma onu yazmalısınız.
EXEC master.dbo.sp_addlinkedserver @server = 'XServer', @srvproduct = 'Oracle', @provider = 'OraOLEDB.Oracle',
@datasrc = 'Xsource' ,@provstr=N'SERVER=serverName\InstanceName;User ID=myUser'

 

EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname = N'XServer', @locallogin = 'myUser' , 
@useself = N'False', @rmtuser = N'oracleuser', @rmtpassword = N'oracleuserşifre'

Yukardaki script’in “addlinkedsrvlogin” ile ilgili olan kısmını çalıştırmak için oracle tarafında yetkisi olan kullanıcıyı ve şifresini bilmeniz gerekir. MS SQL veritabanı uzmanının oracle üzerinde tanımlı bir kullanıcı şifresini bilmesi çok uygun değildir. Bu yüzden bu şifreyi siz hiç öğrenmeden bu işlemi bu linked server’ı kullanacak uygulamacıya yaptırabilirsiniz. Bu işlemi nasıl yaptıracağınızın detaylarını “Oracle’a Bağlanan Linked Server’ın Remote Login Şifresini Uygulamacıya Değiştirtmek ya da Remote Login Oluşturtmak” isimli makalede bulabilirsiniz.

USE MASTER
GO
GRANT EXECUTE ON sys.xp_prop_oledb_provider TO myLogin

 

Oracle Client’ı kurduktan sonra bazı durumlarda linked server da sıkıntı yaşayabilirsiniz.

 

SQL Server Instance’ında ServerObjects->LinkedServers->Providers altında OraOLEDB.Oracle sekmesine sağ tıklayarak aşağıdaki ayarları yaparsanız sıkıntı düzelecektir.

Bütün bu işlemlerden sonra linked server’ı aşağıdaki şekilde kullanabilirsiniz.

SELECT * FROM OPENQUERY([XServer], 'Select * FROM OracleŞema…')

Loading

Leave Your Comment