OPENQUERY (Transact-SQL)
Изменения: 17 июля 2006 г.
Выполняет указанный передаваемый запрос к указанному связанному серверу. Этот сервер является источником данных OLE DB. Из предложения FROM запроса можно ссылаться на функцию OPENQUERY как на имя таблицы. На функцию OPENQUERY можно также ссылаться как на целевую таблицу инструкции INSERT, UPDATE или DELETE. Это зависит от возможностей поставщика OLE DB. Запрос может возвратить несколько результирующих наборов, но функция OPENQUERY возвращает только первый.
Синтаксические обозначения в Transact-SQL
Синтаксис
OPENQUERY ( linked_server ,'query' )
Аргументы
- linked_server
Идентификатор, представляющий имя связанного сервера.
- 'query'
Строка запроса, выполненного в связанном сервере. Максимальная длина строки 8 КБ.
Замечания
В качестве аргументов в функции OPENQUERY нельзя использовать переменные.
В SQL Server 2000 и более поздних версиях функция OPENQUERY не может быть использована для выполнения расширенных хранимых процедур на связанном сервере. Однако расширенную хранимую процедуру можно выполнить на связанном сервере с помощью четырехсоставного имени. Например:
EXEC SeattleSales.master.dbo.xp_msver
Разрешения
Функцию OPENQUERY может выполнить любой пользователь. Разрешения, используемые для подключения к удаленному серверу, извлекаются из настроек, определенных для связанного сервера.
Примеры
A. Выполнение передаваемого запроса SELECT
В следующем примере создается связанный сервер с именем OracleSvr
для базы данных Oracle с использованием поставщика Microsoft OLE DB для Oracle. Затем в примере используется передаваемый запрос SELECT
к этому связанному серверу.
Примечание. |
---|
В примере предполагается, что был создан псевдоним ORCLDB базы данных Oracle. |
EXEC sp_addlinkedserver 'OracleSvr',
'Oracle 7.3',
'MSDAORA',
'ORCLDB'
GO
SELECT *
FROM OPENQUERY(OracleSvr, 'SELECT name, id FROM joe.titles')
GO
Б. Выполнение передаваемого запроса UPDATE
В следующем примере используется передаваемый запрос UPDATE
к связанному серверу, созданному в примере А.
UPDATE OPENQUERY (OracleSvr, 'SELECT name FROM joe.titles WHERE id = 101')
SET name = 'ADifferentName';
B. Выполнение передаваемого запроса INSERT
В следующем примере используется передаваемый запрос INSERT
к связанному серверу, созданному в примере А.
INSERT OPENQUERY (OracleSvr, 'SELECT name FROM joe.titles')
VALUES ('NewTitle');
Г. Выполнение передаваемого запроса DELETE
В следующем примере используется передаваемый запрос DELETE
для удаления строки, созданной в примере В.
DELETE OPENQUERY (OracleSvr, 'SELECT name FROM joe.titles WHERE name = ''NewTitle''');
См. также
Справочник
DELETE (Transact-SQL)
FROM (Transact-SQL)
INSERT (Transact-SQL)
OPENDATASOURCE (Transact-SQL)
OPENROWSET (Transact-SQL)
Функции наборов строк (Transact-SQL)
SELECT (Transact-SQL)
sp_addlinkedserver (Transact-SQL)
sp_serveroption (Transact-SQL)
UPDATE (Transact-SQL)
Предложение WHERE (Transact-SQL)
Другие ресурсы
Справка и поддержка
Получение помощи по SQL Server 2005
Журнал изменений
Версия | Журнал |
---|---|
17 июля 2006 г. |
|
14 апреля 2006 г. |
|