Идентификация источника данных по нерегламентированному имени

Если обращение к источнику данных OLE DB происходит не настолько часто, чтобы имело смысл использовать связанный сервер, то для ссылок на таблицы можно использовать нерегламентированные имена. Для предоставления нерегламентированных имен в SQL Server 2005 служат функции OPENROWSET и OPENDATASOURCE.

Возможность управления доступом к источникам данных предоставляют только связанные серверы. Поскольку эта возможность для нерегламентированных имен не поддерживается, они запрещены по умолчанию для всех поставщиков OLE DB, кроме поставщика OLE DB для собственного клиента SQL.

ms187873.note(ru-ru,SQL.90).gifВажно!
Для каждого экземпляра сервера SQL Server члены фиксированной серверной роли sysadmin могут разрешить или запретить применение нерегламентированных имен при обращении к поставщику OLE DB при помощи параметра поставщика DisallowAdhocAccess и параметра конфигурации сервера Ad Hoc Distributed Queries. Если доступ по нерегламентированным именам разрешен, любой пользователь, вошедший в систему экземпляра, может выполнять инструкции SQL, которые содержат такие имена, ссылающиеся на любые источники данных в сети, доступ к которым можно получить через поставщик OLE DB. Для управления доступом к источникам данных члены роли sysadmin могут запретить доступ посредством нерегламентированных имен для этих поставщиков OLE DB, ограничивая доступ пользователей только к тем источникам данных, на которые ссылаются имена связанных серверов, определенные администраторами. По умолчанию доступ по нерегламентированным именам разрешен для поставщика OLE DB для собственного клиента SQL и запрещен для всех других поставщиков OLE DB.

Функции OPENROWSET и OPENDATASOURCE предоставляют сведения о подключении по нерегламентированным именам. При помощи этих функций можно указать все данные, которые требуются для доступа к источнику данных OLE DB. Тем не менее функции OPENROWSET и OPENDATASOURCE не являются взаимозаменяемыми.

  • Функцию OPENROWSET можно применять везде, где поставщик OLE DB возвращает набор строк, указав или имя таблицы (представления), или запроса, возвращающего набор строк. Ее можно использовать вместо имени таблицы или представления в инструкции Transact-SQL.
  • Функция OPENDATASOURCE применяется только в тех случаях, если поставщик предоставляет наборы строк и использует нотацию каталог**.схема.объект. Функцию OPENDATASOURCE можно использовать там, где синтаксис Transact-SQL позволяет указать имя связанного сервера. В нотации каталог.схема.**объект функцию OPENDATASOURCE можно использовать в качестве четырехсоставного имени, которое ссылается на таблицу или представление.

Функции OPENROWSET и OPENDATASOURCE следует использовать только для доступа к внешним данным в специальных ситуациях, когда невозможно настроить постоянный связанный сервер. Они не поддерживают некоторые функции связанных серверов, включая управление сопоставлением имен входа, возможность запросить метаданные связанного сервера и возможность настройки различных параметров соединения (например времени ожидания).

ms187873.security(ru-ru,SQL.90).gifПримечание безопасности.
При подключении к другому источнику данных SQL Server соответствующим образом олицетворяет имена входа, использующие проверку подлинности Windows; однако SQL Server не может выполнить олицетворение имен входа, использующих проверку подлинности SQL Server. Таким образом, для имен входа, использующих проверку подлинности SQL Server, последний может обращаться к таким источникам данных, как файлы и нереляционные источники данных (например Active Directory), используя контекст безопасности учетной записи Windows, под которой запущена служба SQL Server. В результате из-за разрешений, предоставленных учетной записи, под которой запущена служба SQL Server, доступ к этим источникам данных могут получить имена входа, у которых нет соответствующих разрешений. Эту возможность всегда следует учитывать при использовании имен входа, которые используют проверку подлинности SQL Server.

В качестве аргументов функций OPENROWSET и OPENDATASOURCE нельзя использовать переменные. Аргументы должны быть заданы строковыми литералами. Если в качестве аргумента требуется передать переменную, то строку запроса, содержащую переменные, можно сформировать динамически и выполнить при помощи инструкции EXECUTE.

См. также

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

Доступ к внешним данным
Распределенные запросы

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

OPENDATASOURCE (Transact-SQL)
OPENROWSET (Transact-SQL)

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

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