openquery (Transact-sql)
Belirtilen bağlantılı sunucusuna belirtilen doğrudan sorgu yürütür. Bu sunucu bir ole db veri kaynağıdır. Tablo adı sanki openquery bir sorgunun from yan tümcesinde başvurulabilir. openquery INSERT, update, hedef tablo olarak da başvurulabilir veya delete deyimi. ole db sağlayıcı yeteneklerini konu budur. Sorgu birden fazla sonuç kümeleri döndürebilir, ancak openquery yalnızca ilk yanıtı döndürür.
Transact-SQL Sözdizim Kuralları
Sözdizimi
OPENQUERY ( linked_server ,'query' )
Bağımsız değişkenler
linked_server
Bağlantılı sunucu adı tanımlayıcı temsil etmektedir.'query'
Sorgu dizesi bağlantılı sunucu yürütülür. Dizenin en fazla uzunluğu 8 KB'tır.
Açıklamalar
openquery bağımsız değişkenleri kabul etmez.
openquery bağlantılı bir sunucu üzerinde genişletilmiş saklı yordamları yürütmek için kullanılamaz. Ancak, genişletilmiş saklı yordam bir bağlantılı sunucu üzerinde four-part adı kullanılarak çalıştırılabilir. Örneğin:
EXEC SeattleSales.master.dbo.xp_msver
EXEC SeattleSales.master.dbo.xp_msver
FROM yan tümcesinde OPENDATASOURCE, OPENQUERY veya OPENROWSET deyimine yapılan tüm çağrılar, ayrı ayrı ve her iki çağrıya da aynı değişkenler sağlansa da güncelleştirmenin hedefi olarak bu işlevlere yapılan tüm çağrılardan bağımsız olarak değerlendirilir. Özellikle, bu çağrılardan birinin sonuçlarına uygulanan filtreleme veya birleştirme koşullarının diğeri üzerinde hiçbir etkisi yoktur.
İzinler
Herhangi bir kullanıcı, openquery yürütebilirsiniz. Uzak sunucuya bağlanmak için kullanılan izinleri bağlantılı sunucu için tanımlanan ayarları elde edilir.
Örnekler
A.GÜNCELLEŞTİRME doğrudan sorgusu yürütme
Aşağıdaki örnekte bir doğrudan kullanan UPDATEa oluşturulan bağlantılı sunucu sorgusu
UPDATE OPENQUERY (OracleSvr, 'SELECT name FROM joe.titles WHERE id = 101')
SET name = 'ADifferentName';
UPDATE OPENQUERY (OracleSvr, 'SELECT name FROM joe.titles WHERE id = 101')
SET name = 'ADifferentName';
B.INSERT doğrudan sorgusu yürütme
Aşağıdaki örnekte bir doğrudan kullanan INSERTa oluşturulan bağlantılı sunucu sorgusu
INSERT OPENQUERY (OracleSvr, 'SELECT name FROM joe.titles')
VALUES ('NewTitle');
INSERT OPENQUERY (OracleSvr, 'SELECT name FROM joe.titles')
VALUES ('NewTitle');
C.SİLME doğrudan sorgusu yürütme
Aşağıdaki örnekte bir doğrudan kullanan DELETEc. örnekte eklenen satır silmek için sorgu
DELETE OPENQUERY (OracleSvr, 'SELECT name FROM joe.titles WHERE name = ''NewTitle''');
DELETE OPENQUERY (OracleSvr, 'SELECT name FROM joe.titles WHERE name = ''NewTitle''');
Ayrıca bkz.
Başvuru
Satır kümesi işlevler (Transact-sql)
sp_addlinkedserver (Transact-sql)