Udostępnij za pośrednictwem


OPENDATASOURCE (Transact-SQL)

Dotyczy:SQL ServerAzure SQL Managed Instance

Udostępnia informacje o połączeniu ad hoc jako część nazwy obiektu czteroczęściowego bez używania połączonej nazwy serwera.

Transact-SQL konwencje składni

Syntax

OPENDATASOURCE ( 'provider_name', 'init_string' )  

Arguments

'provider_name'

Nazwa zarejestrowana jako IDENTYFIKATOR PROGID dostawcy OLE DB używanego do uzyskiwania dostępu do źródła danych. provider_name jest typem danych char bez wartości domyślnej.

Important

SQL Server Native Client (często skracany jako SNAC) został usunięty z SQL Server 2022 (16.x) i SQL Server Management Studio 19 (SSMS). Zarówno dostawca OLE DB klienta natywnego programu SQL Server (SQLNCLI lub SQLNCLI11), jak i starszy dostawca MICROSOFT OLE DB dla programu SQL Server (SQLOLEDB) nie są zalecane w przypadku nowego programowania. Przełącz się na nowy sterownik Microsoft OLE DB (MSOLEDBSQL) dla programu SQL Server na przyszłość.

'init_string'

Parametry połączenia przekazane do interfejsu IDataInitialize dostawcy docelowego. Składnia ciągu dostawcy jest oparta na parach słowa kluczowego-wartość oddzielonych średnikami, takimi jak: 'keyword1=value;keyword2=value'.

Aby uzyskać informacje o określonych parach słów kluczowych-wartość obsługiwanych przez dostawcę, zobacz zestaw SDK dostępu do danych firmy Microsoft. Ta dokumentacja definiuje podstawową składnię. W poniższej tabeli wymieniono najczęściej używane słowa kluczowe w argumencie init_string .

Keyword Właściwość OLE DB Prawidłowe wartości i opis
Data Source DBPROP_INIT_DATASOURCE Nazwa źródła danych do nawiązania połączenia. Różni dostawcy interpretują to na różne sposoby. W przypadku dostawcy OLE DB klienta natywnego programu SQL Server oznacza to nazwę serwera. W przypadku dostawcy Jet OLE DB oznacza to pełną ścieżkę pliku .mdb lub pliku .xls.
Location DBPROP_INIT_LOCATION Lokalizacja bazy danych do nawiązania połączenia.
Extended Properties DBPROP_INIT_PROVIDERSTRING Ciąg połączenia specyficzny dla dostawcy.
Connect timeout DBPROP_INIT_TIMEOUT Wartość limitu czasu, po której próba połączenia kończy się niepowodzeniem.
User ID DBPROP_AUTH_USERID Identyfikator użytkownika, który ma być używany na potrzeby połączenia.
Password DBPROP_AUTH_PASSWORD Hasło do użycia na potrzeby połączenia.
Catalog DBPROP_INIT_CATALOG Nazwa początkowego lub domyślnego wykazu podczas nawiązywania połączenia ze źródłem danych.
Integrated Security DBPROP_AUTH_INTEGRATED SSPI, aby określić uwierzytelnianie systemu Windows

Remarks

OPENROWSET zawsze dziedziczy sortowanie wystąpienia, niezależnie od sortowania ustawionego dla kolumn.

OPENDATASOURCE Może służyć do uzyskiwania dostępu do danych zdalnych ze źródeł danych OLE DB tylko wtedy, gdy opcja rejestru DisallowAdhocAccess jest jawnie ustawiona na 0 dla określonego dostawcy, a opcja zaawansowana konfiguracji zapytań rozproszonych ad hoc jest włączona. Jeśli te opcje nie są ustawione, domyślne zachowanie nie zezwala na dostęp ad hoc.

Funkcji OPENDATASOURCE można używać w tych samych lokalizacjach składni Transact-SQL co nazwa serwera połączonego. OPENDATASOURCE W związku z tym można użyć jako pierwszej części nazwy czteroczęściowej, która odwołuje się do tabeli lub nazwy widoku w instrukcji SELECT, INSERT, UPDATE lub DELETE albo do zdalnej procedury składowanej w instrukcji EXECUTE. W zdalnych procedurach OPENDATASOURCE składowanych należy odwołać się do innego wystąpienia programu SQL Server. BIBLIOTEKA OPENDATASOURCE nie akceptuje zmiennych dla argumentów.

Podobnie jak funkcja OPENROWSET , OPENDATASOURCE powinna odwoływać się tylko do źródeł danych OLE DB, do których uzyskuje się dostęp rzadko. Zdefiniuj serwer połączony dla wszystkich źródeł danych, do których uzyskiwano dostęp więcej niż kilka razy. Ani OPENDATASOURCE, ani OPENROWSET nie udostępniają wszystkich funkcji definicji serwera połączonego, takich jak zarządzanie zabezpieczeniami i możliwość wykonywania zapytań dotyczących informacji katalogu. Wszystkie informacje o połączeniu, w tym hasła, muszą być udostępniane za każdym razem, gdy jest wywoływana funkcja OPENDATASOURCE.

Important

Uwierzytelnianie systemu Windows jest znacznie bezpieczniejsze niż uwierzytelnianie programu SQL Server. Zawsze, gdy jest to możliwe, należy użyć uwierzytelniania systemu Windows. OPENDATASOURCE Nie należy używać z jawnymi hasłami w parametrach połączenia.

Wymagania dotyczące połączeń dla każdego dostawcy są podobne do wymagań tych parametrów podczas tworzenia serwerów połączonych. Szczegółowe informacje dotyczące wielu typowych dostawców znajdują się w artykule sp_addlinkedserver (Transact-SQL).

Każde wywołanie OPENDATASOURCE, OPENQUERYlub OPENROWSET w klauzuli FROM jest oceniane oddzielnie i niezależnie od dowolnego wywołania tych funkcji używanych jako element docelowy aktualizacji, nawet jeśli do dwóch wywołań są dostarczane identyczne argumenty. W szczególności warunki filtrowania lub sprzężenia zastosowane w wyniku jednego z tych wywołań nie mają wpływu na wyniki drugiego.

Permissions

Każdy użytkownik może wykonać plik OPENDATASOURCE. Uprawnienia używane do nawiązywania połączenia z serwerem zdalnym są określane na podstawie parametrów połączenia.

Limitations

Sterownik aparatu bazy danych programu Microsoft Access nie jest obsługiwany.

Examples

A. Używanie biblioteki OPENDATASOURCE z funkcją SELECT i sterownikiem OLE DB programu SQL Server

W poniższym przykładzie użyto sterownika Microsoft OLE DB dla programu SQL Server w celu uzyskania dostępu do HumanResources.Department tabeli w AdventureWorks2022 bazie danych na serwerze Seattle1zdalnym. Instrukcja SELECT służy do definiowania zwracanego zestawu wierszy. Ciąg dostawcy zawiera słowa kluczowe Server i Trusted_Connection. Te słowa kluczowe są rozpoznawane przez sterownik OLE DB programu 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. Używanie biblioteki OPENDATASOURCE z funkcją SELECT i dostawcą OLE DB programu SQL Server

Poniższy przykład tworzy połączenie ad hoc z Payroll wystąpieniem programu SQL Server na serwerze Londoni wysyła zapytanie do AdventureWorks2022.HumanResources.Employee tabeli.

Note

Użycie języka SQLNCLI spowoduje przekierowanie programu SQL Server do najnowszej wersji dostawcy OLE DB klienta natywnego programu SQL Server. Oczekuje się, że dostawca OLE DB zostanie zarejestrowany przy użyciu określonego identyfikatora PROGID w rejestrze.

Important

Dostawca OLE DB klienta SQL Server Native Client (SQLNCLI) pozostaje przestarzały i nie zaleca się używania go do nowych prac programistycznych. Zamiast tego użyj nowego sterownika Microsoft OLE DB dla programu SQL Server (MSOLEDBSQL), który zostanie zaktualizowany o najnowsze funkcje serwera.

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

C. Korzystanie z dostawcy OLE DB firmy Microsoft dla rozwiązania Jet

Poniższy przykład tworzy połączenie ad hoc z arkuszem kalkulacyjnym programu Excel w formacie 1997–2003.

SELECT * FROM OPENDATASOURCE('Microsoft.Jet.OLEDB.4.0',  
    'Data Source=C:\DataFolder\Documents\TestExcel.xls;Extended Properties=EXCEL 5.0')...[Sheet1$] ;  

Next steps