Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Разница между OPENROWSET(), OPENDATASOURCE(), OPENQUERY() ???  [new]
superbluesman
Member

Откуда:
Сообщений: 1017
собственно сабж: ещё раз - где, когда и что из этих функций лучше применять, какие есть с нимим грабли?
15 мар 04, 08:56    [577406]     Ответить | Цитировать Сообщить модератору
 Re: Разница между OPENROWSET(), OPENDATASOURCE(), OPENQUERY() ???  [new]
Glory
Member

Откуда:
Сообщений: 104760
OPENQUERY требует предварительно добавленный и сконфигурированный linked server.
OPENDATASOURCE/OPENROWSET используют явно прописанную строку соединения.

OPENQUERY требует текст запроса к удаленному серверу
OPENDATASOURCE требует имя объекта на удаленном сервере
OPENROWSET работает как с первым та и со вторым.


OPENQUERY всегда 100% передает запрос на выполение удаленному серверу (pass-through query).
Для OPENDATASOURCE/OPENROWSET оптимизатор в зависимости от запроса может выбрать и передачу данных с удаленного сервера и выполение запроса локально. Но такая возможность во многом зависит от удаленного сервера.
(для многих провайдеров он так и делает. Собственно я видел что эти функции могут выполнять запрос удаленно только для MSSQL серверов)

Для OPENQUERY не нужно соблюдать fourpart name convention для доступа к объектам.
Для OPENDATASOURCE(OPENROWSET при обращении к объекту) обязательно соблюдать.
Т.е. если провайдер не поддерживает такой способ обращения к объектам удаленного сервера, то ипользовать OPENDATASOURCE(OPENROWSET) невозможно.

Ни одна из этих функций не поддерживат локальные переменные в качестве свох параметров
15 мар 04, 10:02    [577488]     Ответить | Цитировать Сообщить модератору
 Re: Разница между OPENROWSET(), OPENDATASOURCE(), OPENQUERY() ???  [new]
superbluesman
Member

Откуда:
Сообщений: 1017
Спасибо, Glory!!!
Вам бы книги писать!!!
15 мар 04, 10:38    [577567]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить