OPENDATASOURCE (Transact-SQL)

Изменения: 14 апреля 2006 г.

Предоставляет сведения о нерегламентированном подключении в виде элемента имени объекта, состоящего из четырех частей, без использования имени связанного сервера.

Значок ссылки на разделСоглашение о синтаксисе в Transact-SQL

Синтаксис

OPENDATASOURCE ( provider_name, init_string )

Аргументы

  • provider_name
    Имя, зарегистрированное как PROGID поставщика OLE DB, используемого для доступа к источнику данных. Аргумент provider_name имеет тип char и не имеет значения по умолчанию.
  • init_string
    Строка соединения, передаваемая в интерфейс IDataInitialize целевого поставщика. Синтаксис строки поставщика основан на парах «ключевое_слово-значение», разделенных точкой с запятой, например: 'ключевое_слово1=значение;ключевое_слово2=значение'.

    Описание конкретных пар «ключевое_слово-значение», поддерживаемых поставщиком, см. в пакете Microsoft Data Access SDK. Данная документация определяет основной синтаксис. Следующая таблица содержит наиболее часто используемые ключевые слова в аргументе init_string.

    Ключевое слово Свойство OLE DB Допустимые значения и описание

    Источник данных

    DBPROP_INIT_DATASOURCE

    Имя источника данных для подключения. Различные поставщики интерпретируют его по-разному. Для поставщика OLE DB для собственного клиента SQL это означает имя сервера. Для поставщика Jet OLE DB таким образом определяется полный путь к MDB-файлу или XLS-файлу.

    Расположение

    DBPROP_INIT_LOCATION

    Расположение базы данных для подключения.

    Расширенные свойства

    DBPROP_INIT_PROVIDERSTRING

    Строка подключения этого поставщика.

    Тайм-аут соединения

    DBPROP_INIT_TIMEOUT

    Время, по истечении которого попытка соединения признается неудачной.

    Идентификатор пользователя

    DBPROP_AUTH_USERID

    Идентификатор пользователя для соединения.

    Пароль

    DBPROP_AUTH_PASSWORD

    Пароль для соединения.

    Каталог

    DBPROP_INIT_CATALOG

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

    Встроенные функции безопасности

    DBPROP_AUTH_INTEGRATED

    SSPI, для проверки подлинности Windows

Замечания

Функцию OPENDATASOURCE можно использовать для доступа к удаленным данным из источников OLE DB только в том случае, если параметр реестра DisallowAdhocAccess явно содержит 0 для указанного поставщика, а также если используется расширенный параметр Ad Hoc Distributed Queries. Если эти параметры не установлены, поведение по умолчанию запрещает нерегламентированный доступ.

Функция OPENDATASOURCE может применяться в тех же местах в коде Transact-SQL, где и имя связанного сервера. Следовательно, функцию OPENDATASOURCE можно использовать в качестве первой из четырех частей имени, которое ссылается на таблицу или представление в операторах SELECT, INSERT, UPDATE, DELETE или в удаленной хранимой процедуре в операторе EXECUTE. При запуске удаленных хранимых процедур функция OPENDATASOURCE должна ссылаться на другой экземпляр SQL Server. Функция OPENDATASOURCE не может принимать переменные в качестве аргументов.

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

ms179856.note(ru-ru,SQL.90).gifВажно!
Проверка подлинности Windows более надежна, чем проверка подлинности SQL Server. Везде, где возможно, следует применять проверку подлинности Windows. Не рекомендуется использовать функцию OPENDATASOURCE с паролями, явно присутствующими в строке соединения.

Разрешения

Любой пользователь может выполнить OPENDATASOURCE. Разрешения, применяемые для подключения к удаленному серверу, определяются из строки соединения.

Примеры

В следующем примере создается нерегламентированное соединение с экземпляром Payroll СУБД SQL Server на сервере London, а затем формируется запрос к таблице AdventureWorks.HumanResources.Employee.

SELECT *
FROM OPENDATASOURCE('SQLNCLI',
    'Data Source=London\Payroll;Integrated Security=SSPI')
    .AdventureWorks.HumanResources.Employee

См. также

Справочник

OPENROWSET (Transact-SQL)
sp_addlinkedserver (Transact-SQL)

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

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

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

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

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

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

14 апреля 2006 г.

Новое содержимое:
  • Добавлен пример.