Sdílet prostřednictvím


OPENDATASOURCE (Transact-SQL)

platí pro:SQL Serverazure SQL Managed Instance

Poskytuje informace o ad hoc připojení jako součást názvu čtyřdílného objektu bez použití názvu propojeného serveru.

Transact-SQL konvence syntaxe

Syntax

OPENDATASOURCE ( 'provider_name', 'init_string' )  

Arguments

'provider_name'

Název zaregistrovaný jako PROGID zprostředkovatele OLE DB, který se používá pro přístup ke zdroji dat. provider_name je datový typ char bez výchozí hodnoty.

Important

Nativní klient SQL Serveru (často zkracovaný jako SNAC) byl odebrán z SQL Serveru 2022 (16.x) a SQL Server Management Studio 19 (SSMS). Pro nový vývoj se nedoporučuje zprostředkovatele SQL Server Native Client OLE DB (SQLNCLI nebo SQLNCLI11) ani starší verze zprostředkovatele Microsoft OLE DB pro SQL Server (SQLOLEDB). Přejděte na nový ovladač Microsoft OLE DB (MSOLEDBSQL) pro SQL Server do budoucna.

'init_string'

Připojovací řetězec předaný rozhraní IDataInitialize cílového zprostředkovatele. Syntaxe řetězce zprostředkovatele je založená na párech klíčových hodnot oddělených středníky, například: 'keyword1=value;keyword2=value'.

Konkrétní páry klíčového slova podporované u zprostředkovatele najdete v sadě MICROSOFT Data Access SDK. Tato dokumentace definuje základní syntaxi. Následující tabulka uvádí nejčastěji používaná klíčová slova v argumentu init_string .

Keyword Vlastnost OLE DB Platné hodnoty a popis
Zdroj dat DBPROP_INIT_DATASOURCE Název zdroje dat, ke kterému se chcete připojit. Různí poskytovatelé to interpretují různými způsoby. U zprostředkovatele OLE DB nativního klienta SYSTÉMU SQL Server označuje název serveru. U zprostředkovatele Jet OLE DB označuje úplnou cestu k souboru .mdb nebo souboru .xls.
Location DBPROP_INIT_LOCATION Umístění databáze, ke které se chcete připojit.
Rozšířené vlastnosti DBPROP_INIT_PROVIDERSTRING Připojovací řetězec specifický pro zprostředkovatele.
Časový limit připojení DBPROP_INIT_TIMEOUT Hodnota časového limitu, po které se pokus o připojení nezdaří.
ID uživatele DBPROP_AUTH_USERID ID uživatele, které se má použít pro připojení.
Password DBPROP_AUTH_PASSWORD Heslo, které se má použít pro připojení.
Catalog DBPROP_INIT_CATALOG Název počátečního nebo výchozího katalogu při připojování ke zdroji dat.
Integrované zabezpečení DBPROP_AUTH_INTEGRATED SSPI k určení ověřování systému Windows

Remarks

OPENROWSET vždy dědí kolaci instance bez ohledu na kolaci nastavenou pro sloupce.

OPENDATASOURCE lze použít pro přístup ke vzdáleným datům ze zdrojů dat OLE DB pouze tehdy, když je možnost registru DisallowAdhocAccess explicitně nastavena na hodnotu 0 pro zadaného zprostředkovatele a je povolena možnost rozšířené konfigurace distribuovaných dotazů Ad Hoc. Pokud tyto možnosti nejsou nastavené, výchozí chování neumožňuje ad hoc přístup.

Funkci OPENDATASOURCE lze použít ve stejných umístěních syntaxe Transact-SQL jako název propojeného serveru. OPENDATASOURCE Proto lze použít jako první část názvu čtyřdílné části, která odkazuje na název tabulky nebo zobrazení v příkazu SELECT, INSERT, UPDATE nebo DELETE nebo na vzdálenou uloženou proceduru v příkazu EXECUTE. Ve vzdálených uložených procedurách OPENDATASOURCE by se měl odkazovat na jinou instanci SQL Serveru. OPENDATASOURCE nepřijímá proměnné pro své argumenty.

Podobně jako funkce OPENROWSET by OPENDATASOURCE se měly odkazovat pouze na zdroje dat OLE DB, ke kterým se přistupuje zřídka. Definujte propojený server pro všechny zdroje dat, ke kterým se přistupuje vícekrát. OpenDATASOURCE ani OPENROWSET neposkytuje všechny funkce definic odkazovaného serveru, jako je správa zabezpečení a schopnost dotazovat se na informace katalogu. Všechny informace o připojení, včetně hesel, musí být poskytnuty při každém zavolání OPENDATASOURCE.

Important

Ověřování systému Windows je mnohem bezpečnější než ověřování SYSTÉMU SQL Server. Pokud je to možné, měli byste použít ověřování systému Windows. OPENDATASOURCE by se nemělo používat s explicitními hesly v připojovacím řetězci.

Požadavky na připojení pro každého zprostředkovatele jsou podobné požadavkům pro tyto parametry při vytváření propojených serverů. Podrobnosti pro mnoho běžných poskytovatelů jsou uvedeny v článku sp_addlinkedserver (Transact-SQL).

Jakékoli volání OPENDATASOURCE, OPENQUERYnebo OPENROWSET v klauzuli FROM se vyhodnocuje samostatně a nezávisle na každém volání těchto funkcí používaných jako cíl aktualizace, i když jsou do těchto dvou volání zadány stejné argumenty. Konkrétně platí, že podmínky filtrování nebo spojení použité na výsledek jednoho z těchto volání nemají žádný vliv na výsledky druhého volání.

Permissions

Libovolný uživatel může spustit OPENDATASOURCE. Oprávnění, která se používají pro připojení ke vzdálenému serveru, se určují z připojovacího řetězce.

Limitations

Ovladač databázového stroje Microsoft Access není podporován.

Examples

A. Použití OPENDATASOURCE s příkazem SELECT a ovladačem OLE DB SQL Serveru

Následující příklad používá ovladač Microsoft OLE DB pro SQL Server pro přístup HumanResources.Department k tabulce v AdventureWorks2025 databázi na vzdáleném serveru Seattle1. Příkaz SELECT slouží k definování vrácené sady řádků. Řetězec zprostředkovatele obsahuje klíčová slova Server a Trusted_Connection. Tato klíčová slova jsou rozpoznána ovladačem OLE DB SYSTÉMU 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. Použití OPENDATASOURCE s select a zprostředkovatelEM OLE DB SQL Serveru

Následující příklad vytvoří ad hoc připojení k Payroll instanci SQL Serveru na serveru Londona dotazuje AdventureWorks2022.HumanResources.Employee tabulku.

Note

Použití SQLNCLI přesměruje SQL Server na nejnovější verzi zprostředkovatele OLE DB nativního klienta SQL Serveru. Očekává se, že bude zprostředkovatel OLE DB zaregistrovaný v zadaném rozhraní PROGID v registru.

Important

Zprostředkovatel SQL Server Native Client OLE DB (SQLNCLI) zůstává zastaralý a nedoporučuje se ho používat pro novou vývojovou práci. Místo toho použijte nový ovladač Microsoft OLE DB pro SQL Server (MSOLEDBSQL), který bude aktualizován nejnovějšími funkcemi serveru.

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

C. Použití zprostředkovatele Microsoft OLE DB pro Jet

Následující příklad vytvoří ad hoc připojení k excelové tabulce ve formátu 1997 –2003.

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

Další kroky