Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Область применения: SQL Server Управляемый экземпляр SQL Azure
Передает сведения о нерегламентированном соединении в виде одной из четырех частей имени объекта, без имени связанного сервера.
Соглашения о синтаксисе Transact-SQL
Syntax
OPENDATASOURCE ( 'provider_name', 'init_string' )
Arguments
'provider_name'
Имя, зарегистрированное в качестве PROGID поставщика OLE DB, используемого для доступа к источнику данных. Аргумент provider_name имеет тип данных char и не имеет значения по умолчанию.
Important
Собственный клиент SQL Server (часто сокращенный SNAC) был удален из SQL Server 2022 (16.x) и SQL Server Management Studio 19 (SSMS). Поставщик OLE DB собственного клиента SQL Server (SQLNCLI или SQLNCLI11) и устаревший поставщик Microsoft OLE DB для SQL Server (SQLOLEDB) не рекомендуется для новой разработки. Перейдите на новый драйвер Microsoft OLE DB (MSOLEDBSQL) для SQL Server .
'init_string'
Строка подключения, переданная интерфейсу IDataInitialize конечного поставщика. Синтаксис строки поставщика основан на парах "ключевое слово-значение", разделенных точкой с запятой, например: 'keyword1=value;keyword2=value'
Сведения о определенных парах ключевых слов и значений, поддерживаемых поставщиком, см. в пакете SDK microsoft Data Access. Данная документация определяет основной синтаксис. В приведенной ниже таблице представлены наиболее часто используемые ключевые слова в аргументе init_string.
Keyword | Свойство OLE DB | Допустимые значения и описание |
---|---|---|
Data Source | DBPROP_INIT_DATASOURCE | Имя источника данных для подключения. Различные поставщики интерпретируют его по-разному. Для поставщика OLE DB собственного клиента SQL Server это означает имя сервера. Для поставщика Jet OLE DB таким образом определяется полный путь к MDB-файлу или XLS-файлу. |
Location | DBPROP_INIT_LOCATION | Расположение базы данных для подключения. |
Extended Properties | DBPROP_INIT_PROVIDERSTRING | Строка подключения этого поставщика. |
Connect timeout | DBPROP_INIT_TIMEOUT | Время, по истечении которого попытка соединения признается неудачной. |
User ID | DBPROP_AUTH_USERID | Идентификатор пользователя для соединения. |
Password | DBPROP_AUTH_PASSWORD | Пароль для соединения. |
Catalog | DBPROP_INIT_CATALOG | Имя первоначального каталога или каталога по умолчанию при подключении к источнику данных. |
Integrated Security | DBPROP_AUTH_INTEGRATED | SSPI для указания проверки подлинности Windows |
Remarks
OPENROWSET
всегда наследует параметры сортировки экземпляра независимо от параметров сортировки, заданных для столбцов.
Функцию 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.
Important
Проверка подлинности Windows намного надежней, чем проверка подлинности SQL Server. Везде, где возможно, следует применять проверку подлинности Windows. Не рекомендуется использовать функцию OPENDATASOURCE
с паролями, явно присутствующими в строке соединения.
Требования к соединениям для каждого поставщика похожи на требования к этим параметрам при создании связанных серверов. Подробные сведения для многих распространенных поставщиков приведены в статье sp_addlinkedserver (Transact-SQL).
Любой вызов функции OPENDATASOURCE
, OPENQUERY
или OPENROWSET
в предложении FROM
вычисляется отдельно и независимо от любого вызова этих функций, используемого как назначение при обновлении, даже если в двух таких вызовах будут заданы идентичные аргументы. В частности, условия фильтра или соединения, применяемые к результатам одного из таких вызовов, никак не влияют на результаты другого.
Permissions
Любой пользователь может выполнить OPENDATASOURCE. Разрешения, применяемые для подключения к удаленному серверу, определяются из строки подключения.
Limitations
Не поддерживается драйвером ядра СУБД Microsoft Access.
Examples
A. Использование функции OPENDATASOURCE с инструкцией SELECT и драйвером OLE DB для SQL Server
В следующем примере используется драйвер Microsoft OLE DB для SQL Server для доступа к таблице HumanResources.Department
в базе данных AdventureWorks2022
на удаленном сервере Seattle1
.
Инструкция SELECT
используется для определения возвращаемого набора строк. Строка поставщика содержит ключевые слова Server
и Trusted_Connection
. Эти ключевые слова распознаются драйвером OLE DB SQL Server.
SELECT GroupName, Name, DepartmentID
FROM OPENDATASOURCE('MSOLEDBSQL', 'Server=Seattle1;Database=AdventureWorks2022;TrustServerCertificate=Yes;Trusted_Connection=Yes;').HumanResources.Department
ORDER BY GroupName, Name;
B. Использование функции OPENDATASOURCE с инструкцией SELECT и поставщиком OLE DB для SQL Server
В следующем примере создается нерегламентированное подключение к Payroll
экземпляру SQL Server на сервере London
AdventureWorks2022.HumanResources.Employee
и запрашивается таблица.
Note
Использование SQLNCLI перенаправит SQL Server на последнюю версию поставщика OLE DB собственного клиента SQL Server. Предполагается, что поставщик OLE DB будет зарегистрирован в реестре с указанным идентификатором PROGID.
Important
Собственный клиент OLE DB для SQL Server (SQLNCLI) объявляется нерекомендуемым для новых разработок. Вместо этого используйте новый драйвер Microsoft OLE DB для SQL Server (MSOLEDBSQL), который будет обновлен с самыми последними серверными компонентами.
SELECT *
FROM OPENDATASOURCE('SQLNCLI',
'Data Source=London\Payroll;Integrated Security=SSPI')
.AdventureWorks2022.HumanResources.Employee;
C. Использование поставщика Microsoft OLE DB для Jet
В следующем примере создается нерегламентированное соединение с электронной таблицей Excel в формате 1997 — 2003.
SELECT * FROM OPENDATASOURCE('Microsoft.Jet.OLEDB.4.0',
'Data Source=C:\DataFolder\Documents\TestExcel.xls;Extended Properties=EXCEL 5.0')...[Sheet1$] ;