OPENDATASOURCE (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 Server это означает имя сервера. Для поставщика 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.
Важно! |
---|
Проверка подлинности Windows намного надежнее, чем проверка подлинности SQL Server. Везде, где возможно, следует применять проверку подлинности Windows. Не рекомендуется использовать функцию OPENDATASOURCE с паролями, явно присутствующими в строке соединения. |
Требования к соединениям для каждого поставщика похожи на требования к этим параметрам при создании связанных серверов. Подробности по многим обычным поставщикам приведены в разделе sp_addlinkedserver (Transact-SQL).
Разрешения
Любой пользователь может выполнить OPENDATASOURCE. Разрешения, применяемые для подключения к удаленному серверу, определяются из строки соединения.
Примеры
В следующем примере создается нерегламентированное соединение с экземпляром Payroll СУБД SQL Server на сервере London, а затем формируется запрос к таблице AdventureWorks.HumanResources.Employee. (При использовании SQLNCLI SQL Server выполнит перенаправление к последней версии поставщика OLE DB для собственного клиента SQL Server.)
SELECT *
FROM OPENDATASOURCE('SQLNCLI',
'Data Source=London\Payroll;Integrated Security=SSPI')
.AdventureWorks.HumanResources.Employee
В следующем примере создается нерегламентированное соединение с электронной таблицей Excel в формате 1997 — 2003.
SELECT * FROM OPENDATASOURCE('Microsoft.Jet.OLEDB.4.0',
'Data Source=C:\DataFolder\Documents\TestExcel.xls;Extended Properties=EXCEL 5.0')...[Sheet1$] ;
См. также