Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Applies to:SQL Server
Azure SQL Managed Instance
Provede zadaný předávací dotaz na zadaném propojeném serveru. Tento server je zdrojem dat OLE DB. OPENQUERY lze odkazovat v klauzuli FROM dotazu, jako by se jednalo o název tabulky. OPENQUERY lze také odkazovat jako na cílovou tabulku příkazu INSERT, UPDATE nebo DELETE. To podléhá schopnostem zprostředkovatele OLE DB. I když dotaz může vrátit více sad výsledků, OPENQUERY vrátí pouze první sadu výsledků.
Syntaxe
OPENQUERY ( linked_server ,'query' )
Argumenty
linked_server
Je identifikátor představující název propojeného serveru.
Dotaz
Je řetězec dotazu spuštěný na propojeném serveru. Maximální délka řetězce je 8 kB.
Poznámky
OPENQUERY nepřijímá proměnné pro své argumenty.
OPENQUERY nelze použít ke spouštění rozšířených uložených procedur na propojeném serveru. Rozšířená uložená procedura se ale dá spustit na propojeném serveru pomocí názvu čtyř částí. Například:
EXEC SeattleSales.master.dbo.xp_msver
Jakékoli volání OPENDATASOURCE, OPENQUERY nebo OPENROWSET v klauzuli FROM se vyhodnocuje samostatně a nezávisle na každém volání těchto funkcí používaných jako cíl aktualizace, i když jsou do těchto dvou volání zadány stejné argumenty. Konkrétně platí, že podmínky filtrování nebo spojení použité na výsledek jednoho z těchto volání nemají žádný vliv na výsledky druhého volání.
Povolení
Libovolný uživatel může spustit OPENQUERY. Oprávnění, která se používají pro připojení ke vzdálenému serveru, se získávají z nastavení definovaných pro propojený server.
Příklady
A. Spuštění předávacího dotazu UPDATE
Následující příklad používá předávací UPDATE dotaz na odkazovaný server s názvem OracleSvr.
UPDATE OPENQUERY (OracleSvr, 'SELECT name FROM joe.titles WHERE id = 101')
SET name = 'ADifferentName';
B. Spuštění předávacího dotazu INSERT
Následující příklad používá předávací INSERT dotaz na odkazovaný server s názvem OracleSvr.
INSERT OPENQUERY (OracleSvr, 'SELECT name FROM joe.titles')
VALUES ('NewTitle');
C. Provedení předávacího dotazu DELETE
Následující příklad používá předávací DELETE dotaz k odstranění řádku vloženého v příkladu B.
DELETE OPENQUERY (OracleSvr, 'SELECT name FROM joe.titles WHERE name = ''NewTitle''');
D. Spuštění předávacího dotazu SELECT
Následující příklad používá předávací SELECT dotaz k výběru řádku vloženého v příkladu B.
SELECT * FROM OPENQUERY (OracleSvr, 'SELECT name FROM joe.titles WHERE name = ''NewTitle''');
Viz také
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)