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.

Topic link iconTransact-SQL sözdizimi kuralları

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''');