OPENROWSET Kullanımı
OPENROWSET ile OLE DB veri kaynağı üzerinden uzaktaki bir veriye erişebilirsiniz. OPENROWSET aşağıda göreceğiniz gibi bir sistem fonksiyonudur.
Bu method ile AD HOC bağlantı kurarak veriye tek seferlik erişim sağlanır. Eğer veriye tek seferlik erişim sağlanacaksa linked server yerine kullanılabilir. Eğer veriye erişim sık sık yapılacak linked server tercih edilebilir. Linked Server ile ilgili
Sitemizde Arama kısmına Linked Server yazarsanız ilgili makalelere erişebilirsiniz.
OPENROWSET’i linked server’ın tek seferlik alternatifi olarak aşağıdaki şekilde kullanabilirsiniz. HedefInstanIsmi yazan yere hangi instance üzerinden veri çekecekseniz o instance ismini yazmalısınız.
SELECT Employees.* FROM OPENROWSET( 'SQLNCLI', 'Server=HedefInstanceIsmi;Trusted_Connection=yes', 'SELECT * FROM AdventureWorks2014Yeni.dbo.MyEmployees' ) AS Employees
Eğer yukarıdaki sorguyu çalıştırdığınız instanc üzerinde Ad Hoc Distributed Queries kapalı ise aşağıdaki gibi hata alırsınız.
Msg 15281, Level 16, State 1, Line 1
SQL Server blocked access to STATEMENT ‘OpenRowset/OpenDatasource’ of component ‘Ad Hoc Distributed Queries’
because this component is turned off as part of the security configuration for this server.
A system administrator can enable the use of ‘Ad Hoc Distributed Queries’ by using sp_configure.
For more information about enabling ‘Ad Hoc Distributed Queries’, search for ‘Ad Hoc Distributed Queries’ in SQL Server Books Online.
Bu hatayı almamak için aşağıdaki script’i yukarıdaki sorguyu çalıştırdığınız instance üzerinde çalıştırmalısınız.
EXEC sp_configure 'show advanced options', 1; GO RECONFIGURE; GO EXEC sp_configure 'Ad Hoc Distributed Queries', 1 GO RECONFIGURE; GO
Eğer hedef’inizdeki server Access veritabanı ise sorgunuz aşağıdaki gibi olmalı.
SELECT Employees.* FROM OPENROWSET( 'Microsoft.Jet.OLEDB.4.0', 'C:\MSSQL\Employees.mdb';'admin';' ', 'SELECT * FROM AdventureWorks2014Yeni.dbo.MyEmployees' ) AS Employees
OPENROWSET’in BULK opsiyonu ile kullanarak dosyalarınızı veritabanına yükleyebilirsiniz. Detayları “Bir klasördeki image dosyalarını tsql kodlarıyla tabloya aktarmak” isimli makalede bulabilirsiniz.
OPENROWSET’ten gelen verileri tablonuzdaki verilerle join yapabilir, tablonuza insert ya da update edebilirsiniz. Sonuçta size bir veri kümesi döndürecektir.