Delen via


OPENDATASOURCE (Transact-SQL)

Van toepassing op:SQL ServerAzure SQL Managed Instance

Biedt ad-hocverbindingsgegevens als onderdeel van een vierdelige objectnaam zonder een gekoppelde servernaam te gebruiken.

Transact-SQL syntaxis-conventies

Syntax

OPENDATASOURCE ( 'provider_name', 'init_string' )  

Arguments

'provider_name'

De naam die is geregistreerd als de PROGID van de OLE DB-provider die wordt gebruikt voor toegang tot de gegevensbron. provider_name is een gegevenstype teken , zonder standaardwaarde.

Important

De SQL Server Native Client (vaak afgekort SNAC) is verwijderd uit SQL Server 2022 (16.x) en SQL Server Management Studio 19 (SSMS). Zowel de SQL Server Native Client OLE DB-provider (SQLNCLI of SQLNCLI11) als de verouderde Microsoft OLE DB-provider voor SQL Server (SQLOLEDB) worden niet aanbevolen voor nieuwe ontwikkeling. Schakel over naar het nieuwe Microsoft OLE DB-stuurprogramma (MSOLEDBSQL) voor SQL Server.

'init_string'

De verbindingsreeks is doorgegeven aan de IDataInitialize-interface van de doelprovider. De tekenreekssyntaxis van de provider is gebaseerd op paren met trefwoordwaarden, gescheiden door puntkomma's, zoals: 'keyword1=value;keyword2=value'.

Zie de Microsoft Data Access SDK voor specifieke paren met trefwoordwaarden die worden ondersteund voor de provider. In deze documentatie wordt de basissyntaxis gedefinieerd. De volgende tabel bevat de meest gebruikte trefwoorden in het argument init_string .

Keyword OLE DB-eigenschap Geldige waarden en beschrijving
Data Source DBPROP_INIT_DATASOURCE Naam van de gegevensbron waarmee verbinding moet worden gemaakt. Verschillende providers interpreteren dit op verschillende manieren. Voor SQL Server Native Client OLE DB-provider geeft dit de naam van de server aan. Voor jet OLE DB-provider geeft dit het volledige pad van het .mdb-bestand of .xls bestand aan.
Location DBPROP_INIT_LOCATION Locatie van de database waarmee verbinding moet worden gemaakt.
Extended Properties DBPROP_INIT_PROVIDERSTRING De providerspecifieke verbindingsreeks.
Connect timeout DBPROP_INIT_TIMEOUT Time-outwaarde waarna de verbinding mislukt.
User ID DBPROP_AUTH_USERID Gebruikers-id die moet worden gebruikt voor de verbinding.
Password DBPROP_AUTH_PASSWORD Wachtwoord dat moet worden gebruikt voor de verbinding.
Catalog DBPROP_INIT_CATALOG De naam van de initiƫle of standaardcatalogus bij het maken van verbinding met de gegevensbron.
Integrated Security DBPROP_AUTH_INTEGRATED SSPI, om Windows-verificatie op te geven

Remarks

OPENROWSET neemt altijd de instantiesortering over, ongeacht de sorteringsset voor kolommen.

OPENDATASOURCE kan alleen worden gebruikt voor toegang tot externe gegevens uit OLE DB-gegevensbronnen wanneer de registeroptie DisallowAdhocAccess expliciet is ingesteld op 0 voor de opgegeven provider en de geavanceerde configuratieoptie Ad Hoc gedistribueerde query's is ingeschakeld. Wanneer deze opties niet zijn ingesteld, is het standaardgedrag niet toegestaan voor ad-hoctoegang.

De OPENDATASOURCE functie kan worden gebruikt in dezelfde Transact-SQL syntaxislocaties als een naam van een gekoppelde server. OPENDATASOURCE Daarom kan worden gebruikt als het eerste deel van een vierdelige naam die verwijst naar een tabel- of weergavenaam in een INSTRUCTIE SELECT, INSERT, UPDATE of DELETE, of naar een externe opgeslagen procedure in een EXECUTE-instructie. In externe opgeslagen procedures OPENDATASOURCE moet u verwijzen naar een ander exemplaar van SQL Server. OPENDATASOURCE accepteert geen variabelen voor de argumenten.

Net als bij de OPENROWSET functie moet OPENDATASOURCE alleen worden verwezen naar OLE DB-gegevensbronnen die niet vaak worden geopend. Definieer een gekoppelde server voor alle gegevensbronnen die meer dan meerdere keren worden geopend. OPENDATASOURCE of OPENROWSET biedt niet alle functionaliteit van definities van gekoppelde servers, zoals beveiligingsbeheer en de mogelijkheid om catalogusgegevens op te vragen. Alle verbindingsgegevens, inclusief wachtwoorden, moeten telkens worden opgegeven wanneer OPENDATASOURCE wordt aangeroepen.

Important

Windows-verificatie is veel veiliger dan SQL Server-verificatie. U moet waar mogelijk Windows-verificatie gebruiken. OPENDATASOURCE mag niet worden gebruikt met expliciete wachtwoorden in de verbindingsreeks.

De verbindingsvereisten voor elke provider zijn vergelijkbaar met de vereisten voor deze parameters bij het maken van gekoppelde servers. De details voor veel algemene providers worden vermeld in het artikel sp_addlinkedserver (Transact-SQL).

Elke aanroep van OPENDATASOURCE, OPENQUERYof OPENROWSET in de FROM component wordt afzonderlijk en onafhankelijk van elke aanroep naar deze functies die worden gebruikt als doel van de update, zelfs als identieke argumenten aan de twee aanroepen worden verstrekt. Met name filter- of joinvoorwaarden die zijn toegepast op het resultaat van een van deze aanroepen, hebben geen invloed op de resultaten van de andere.

Permissions

Elke gebruiker kan OPENDATASOURCE uitvoeren. De machtigingen die worden gebruikt om verbinding te maken met de externe server, worden bepaald vanuit de verbindingsreeks.

Limitations

Niet ondersteund met microsoft Access Database Engine-stuurprogramma.

Examples

A. OPENDATASOURCE gebruiken met SELECT en het SQL Server OLE DB-stuurprogramma

In het volgende voorbeeld wordt het Microsoft OLE DB-stuurprogramma voor SQL Server gebruikt voor toegang tot de HumanResources.Department tabel in de AdventureWorks2022 database op de externe server Seattle1. Er wordt een SELECT instructie gebruikt om de geretourneerde rijset te definiƫren. De providertekenreeks bevat de Server en Trusted_Connection trefwoorden. Deze trefwoorden worden herkend door het SQL Server OLE DB-stuurprogramma.

SELECT GroupName, Name, DepartmentID  
FROM OPENDATASOURCE('MSOLEDBSQL', 'Server=Seattle1;Database=AdventureWorks2022;TrustServerCertificate=Yes;Trusted_Connection=Yes;').HumanResources.Department  
ORDER BY GroupName, Name;  

B. OPENDATASOURCE gebruiken met SELECT en de SQL Server OLE DB-provider

In het volgende voorbeeld wordt een ad-hocverbinding gemaakt met het Payroll exemplaar van SQL Server op de server Londonen wordt een query uitgevoerd op de AdventureWorks2022.HumanResources.Employee tabel.

Note

Met BEHULP van SQLNCLI wordt SQL Server omgeleid naar de nieuwste versie van DE OLE DB-provider van SQL Server Native Client. De OLE DB-provider wordt naar verwachting geregistreerd bij de opgegeven PROGID in het register.

Important

SQL Server Native Client OLE DB-provider (SQLNCLI) blijft afgeschaft en het wordt niet aanbevolen om deze te gebruiken voor nieuw ontwikkelwerk. Gebruik in plaats daarvan het nieuwe Microsoft OLE DB-stuurprogramma voor SQL Server (MSOLEDBSQL) die wordt bijgewerkt met de meest recente serverfuncties.

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

C. De Microsoft OLE DB-provider voor Jet gebruiken

In het volgende voorbeeld wordt een ad-hocverbinding met een Excel-spreadsheet gemaakt in de indeling 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