Рекомендации по использованию распределенных запросов

Изменения: 17 июля 2006 г.

До тех пор пока поставщик поддерживает необходимые интерфейсы OLE DB, допускаются все классы инструкций Transact-SQL, упомянутые в этом разделе.

Инструкции на языке Transact-SQL

Ниже приведен список поднаборов языка Transact-SQL, допустимых для удаленных таблиц, доступ к которым получен через имена связанных серверов или нерегламентированные имена.

  • Допускаются любые запросы, содержащие стандартную форму инструкции SELECT select_list с предложением FROM и предложением WHERE. Предложение INTO new_table_name инструкции SELECT не допускается, если new_table_name ссылается на удаленную таблицу.
  • В инструкциях SELECT, INSERT, UPDATE и DELETE столбцы в удаленных таблицах не могут обозначаться одночастным или четырехчастным именем таблицы. Удаленные таблицы в предложении FROM должны обозначаться псевдонимами, и этот псевдоним следует использовать для обозначения имени столбца.
  • Таблицы, имеющие столбцы типа xml, запрашивать нельзя, даже если запрашиваются столбцы, отличные от xml.
  • Если столбец большого объекта (LOB) из удаленной таблицы указан в качестве элемента select_list в инструкции SELECT, инструкция SELECT не может содержать предложение ORDER BY.
  • Предикаты IS NULL и IS NOT NULL не могут ссылаться на столбцы LOB в удаленной таблице.
  • GROUP BY ALL не допускается в распределенном запросе, если в этом запросе также содержится предложение WHERE. GROUP BY без указания ALL поддерживается.
  • Инструкции INSERT допускаются в отношении удаленных таблиц, если поставщик соответствует требованиям OLE DB для инструкций INSERT. Дополнительные сведения см. в разделе Требования к инструкции INSERT для поставщиков OLE DB.
  • Константы NULL не могут быть вставлены в столбец timestamp через распределенный запрос.
  • $IDENTITY и $ROWGUIDCOL не поддерживаются для распределенных запросов. Явные значения не могут быть вставлены в столбцы идентификаторов в удаленных таблицах.
  • Инструкции UPDATE и DELETE допускаются в отношении удаленных таблиц, если поставщик соответствует требованиям интерфейса OLE DB для указанной таблицы. Дополнительные сведения см. в разделе Требования UPDATE и DELETE для поставщиков OLE DB.
  • Удаленная таблица может подвергаться обновлению или удалению посредством курсора, определенного для распределенного запроса, где удаленная таблица указана в инструкции UPDATE или DELETE (UPDATE или DELETE remote_table WHERE CURRENT OF cursor_name), если поставщик соответствует условиям возможности обновления удаленной таблицы. Дополнительные сведения см. в разделе Использование курсоров с распределенными запросами.
  • Инструкции READTEXT, WRITETEXT и UPDATETEXT не поддерживаются в отношении удаленных таблиц.
  • В операциях обновления или вставки нельзя ссылаться на столбцы, содержащие типы данных больших объектов (такие как text, ntext или image), если поставщик подвергается обработке вне SQL Server, параметр поставщика AllowInProcess имеет значение 0. Дополнительные сведения см. в разделе Настройка поставщиков OLE DB для распределенных запросов.
  • Инструкции языка определения данных (DDL), такие как CREATE, ALTER или DROP, не допускаются в отношении связанных серверов.
  • Инструкция EXECUTE, указывающая транзитную команду, поддерживается в отношении связанных серверов. Эта инструкция может быть использована для выполнения хранимых процедур в отношении иных поставщиков, не относящихся к SQL Server.
  • Другие операции или инструкции на уровне базы данных для связанных серверов не допускаются.

Другие рекомендации

Ниже приведены некоторые дополнительные ограничения и рекомендации.

  • Курсоры STATIC или INSENSITIVE могут ссылаться на удаленные таблицы. Курсоры KEYSET могут ссылаться на удаленные таблицы, если поставщик OLE DB соответствует определенным требованиям. Дополнительные сведения об этих требованиях см. в разделе Требования к курсорам, управляемым набором ключей, для поставщиков OLE DB. Другие типы курсоров не могут ссылаться на удаленную таблицу.
  • Хранимые процедуры поддерживаются только в отношении источников данных SQL Server.
  • Параметры соединения ANSI_NULLS и ANSI_WARNINGS должны быть выставлены на ON прежде, чем соединение сможет выполнять распределенные запросы. Дополнительные сведения см. в разделе SET ANSI_DEFAULTS (Transact-SQL).

См. также

Основные понятия

Использование транзакций с распределенными запросами
Сопоставление типов данных в распределенных запросах
Распределенные запросы

Другие ресурсы

SELECT (Transact-SQL)
EXECUTE (Transact-SQL)

Справка и поддержка

Получение помощи по SQL Server 2005

Журнал изменений

Версия Журнал

17 июля 2006 г.

Добавления
  • Добавлена запись о том, что таблицы, имеющим столбцы типа xml, запрашивать нельзя.