Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy:SQL Server
Azure 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
, OPENQUERY
lub 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 Seattle1
zdalnym.
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 London
i 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$] ;