Aracılığıyla paylaş


OPENQUERY (Transact-SQL)

Applies to:SQL ServerAzure SQL Managed Instance

Belirtilen doğrudan sorguyu belirtilen bağlı sunucuda yürütür. Bu sunucu bir OLE DB veri kaynağıdır. OPENQUERY'ye bir sorgunun FROM yan tümcesinde tablo adıymış gibi başvurulabilir. OPENQUERY,INSERT, UPDATE veya DELETE deyiminin hedef tablosu olarak da başvurulabilir. Bu, OLE DB sağlayıcısının özelliklerine tabidir. Sorgu birden çok sonuç kümesi döndürse de, OPENQUERY yalnızca ilkini döndürür.

Transact-SQL söz dizimi kuralları

Sözdizimi

OPENQUERY ( linked_server ,'query' )  

Argümanlar

linked_server
Bağlı sunucunun adını temsil eden bir tanımlayıcıdır.

'query'
Sorgu dizesi bağlı sunucuda yürütülür. Dizenin uzunluğu üst sınırı 8 KB'tır.

Açıklamalar

OPENQUERY bağımsız değişkenleri kabul etmez.

OPENQUERY, bağlı bir sunucuda genişletilmiş saklı yordamları yürütmek için kullanılamaz. Ancak, genişletilmiş bir saklı yordam, dört parçalı bir ad kullanılarak bağlı bir sunucuda yürütülebilir. Örneğin:

EXEC SeattleSales.master.dbo.xp_msver  

FROM yan tümcesindeki OPENDATASOURCE, OPENQUERY veya OPENROWSET çağrıları, iki çağrıya aynı bağımsız değişkenler sağlansa bile güncelleştirmenin hedefi olarak kullanılan bu işlevlere yapılan tüm çağrılardan ayrı ve bağımsız olarak değerlendirilir. Özellikle, bu çağrılardan birinin sonucuna uygulanan filtre veya birleştirme koşullarının diğerinin sonuçları üzerinde hiçbir etkisi yoktur.

İzinler

Herhangi bir kullanıcı OPENQUERY yürütebilir. Uzak sunucuya bağlanmak için kullanılan izinler, bağlı sunucu için tanımlanan ayarlardan alınır.

Örnekler

A. UPDATE doğrudan sorgusunu yürütme

Aşağıdaki örnekte adlı OracleSvrbağlı sunucuya yönelik bir geçiş UPDATE sorgusu kullanılır.

UPDATE OPENQUERY (OracleSvr, 'SELECT name FROM joe.titles WHERE id = 101')   
SET name = 'ADifferentName';  

B. INSERT doğrudan sorgusunu yürütme

Aşağıdaki örnekte adlı OracleSvrbağlı sunucuya yönelik bir geçiş INSERT sorgusu kullanılır.

INSERT OPENQUERY (OracleSvr, 'SELECT name FROM joe.titles')  
VALUES ('NewTitle');  

C. DELETE doğrudan sorgusunu yürütme

Aşağıdaki örnekte, B örneğine eklenen satırı silmek için bir geçiş DELETE sorgusu kullanılır.

DELETE OPENQUERY (OracleSvr, 'SELECT name FROM joe.titles WHERE name = ''NewTitle''');  

D. SELECT geçiş sorgusu yürütme

Aşağıdaki örnekte, B örneğine eklenen satırı seçmek için bir geçiş SELECT sorgusu kullanılır.

SELECT * FROM OPENQUERY (OracleSvr, 'SELECT name FROM joe.titles WHERE name = ''NewTitle''');  

Ayrıca Bkz.

DELETE (Transact-SQL)
FROM (Transact-SQL)
INSERT (Transact-SQL)
OPENDATASOURCE (Transact-SQL)
OPENROWSET (Transact-SQL)
SELECT (Transact-SQL)
sp_addlinkedserver (Transact-SQL)
sp_serveroption (Transact-SQL)
UPDATE (Transact-SQL)
WHERE (Transact-SQL)