OPENQUERY (Transact-SQL)
Belirlenen doğrudan sorgu, belirtilen bağlantılı sunucu üzerinde çalışır.Bu sunucu bir OLE DB veri kaynağıdır.Bu tablo adı gibi OPENQUERY bir sorgunun FROM yan tümcesinde başvurulabilir.OPENQUERY INSERT, UPDATE, hedef tablo olarak da başvurulabilir veya DELETE deyim.Bu, OLE DB sağlayıcı yeteneklerini tabi olur.Sorgu, birden çok sonuç kümeleri döndürebilir, ancak, yalnızca birinci OPENQUERY döndürür.
OPENQUERY ( linked_server ,'query' )
Bağımsız değişkenler
linked_server
Tanımlayıcı, bağlantılı sunucu adı temsil eden iş.'query'
Sorgu dize bağlantılı sunucu yürütüldü.Dizenin uzunluğu en fazla 8 KB'dir.
Remarks
OPENQUERY bağımsız değişkenler için değişkenler kabul etmez.
OPENQUERY için kullanılan olamaz yürütmek bağlantılı sunucu üzerinde saklı yordamlar genişletilmiş.Ancak, bir genişletilmiş saklı yordam bağlantılı sunucu üzerinde four-part bir ad kullanılarak çalıştırılabilir.Örneğin:
EXEC SeattleSales.master.dbo.xp_msver
İzinler
Herhangi bir kullanıcı OPENQUERY çalıştırabilirsiniz.Uzak sunucuya bağlanmak için kullanılan izinleri, bağlantılı sunucu için tanımlanan ayarlarından alınır.
Örnekler
C.Bir SELECT yürütülüyor doğrudan sorgu
Aşağıdaki örnek, adlı bağlantılı sunucu oluşturur. OracleSvr kullanarak Oracle veritabanına karşı Microsoft Oracle için OLE DB sağlayıcı. Sonra bu örnek bir doğrudan kullanır. SELECT Bu bir bağlantılı sunucu sorgusu.
Not
Bu örnek, bir Oracle veritabanı diğer ad ad adı olarak adlandırılan varsayar ORCLDB oluşturuldu.
EXEC sp_addlinkedserver 'OracleSvr',
'Oracle 7.3',
'MSDAORA',
'ORCLDB';
GO
SELECT *
FROM OPENQUERY(OracleSvr, 'SELECT name, id FROM joe.titles');
GO
b.UPDATE geçiş sorgusu yürütme
Aşağıdaki örnekte bir doğrudan kullanır. UPDATE örnekte, A oluşturulan bir bağlantılı sunucu sorgusu
UPDATE OPENQUERY (OracleSvr, 'SELECT name FROM joe.titles WHERE id = 101')
SET name = 'ADifferentName';
c.INSERT geçiş sorgusu yürütme
Aşağıdaki örnekte bir doğrudan kullanır. INSERT örnekte, A oluşturulan bir bağlantılı sunucu sorgusu
INSERT OPENQUERY (OracleSvr, 'SELECT name FROM joe.titles')
VALUES ('NewTitle');
d.DELETE doğrudan Sorgu Yürütülüyor
Aşağıdaki örnekte bir doğrudan kullanır. DELETE Sorgu, C örnekte eklenen satır silmek için
DELETE OPENQUERY (OracleSvr, 'SELECT name FROM joe.titles WHERE name = ''NewTitle''');