Dela via


OPENDATASOURCE (Transact-SQL)

gäller för:SQL ServerAzure SQL Managed Instance

Tillhandahåller ad hoc-anslutningsinformation som en del av ett objektnamn i fyra delar utan att använda ett länkat servernamn.

Transact-SQL syntaxkonventioner

Syntax

OPENDATASOURCE ( 'provider_name', 'init_string' )  

Arguments

'provider_name'

Namnet som registrerats som PROGID för OLE DB-providern som används för att komma åt datakällan. provider_name är en teckendatatyp utan standardvärde.

Important

Den interna SQL Server-klienten (ofta förkortad SNAC) har tagits bort från SQL Server 2022 (16.x) och SQL Server Management Studio 19 (SSMS). Både SQL Server Native Client OLE DB-providern (SQLNCLI eller SQLNCLI11) och den äldre Microsoft OLE DB-providern för SQL Server (SQLOLEDB) rekommenderas inte för ny utveckling. Växla till den nya Microsoft OLE DB Driver (MSOLEDBSQL) för SQL Server framöver.

'init_string'

Anslutningssträngen som skickades till IDataInitialize-gränssnittet för målprovidern. Providersträngsyntaxen baseras på nyckelordsvärdepar avgränsade med semikolon, till exempel: 'keyword1=value;keyword2=value'.

Specifika nyckelordsvärdepar som stöds på providern finns i Microsoft Data Access SDK. Den här dokumentationen definierar den grundläggande syntaxen. I följande tabell visas de vanligaste nyckelorden i argumentet init_string .

Keyword OLE DB-egenskap Giltiga värden och beskrivning
Data Source DBPROP_INIT_DATASOURCE Namnet på den datakälla som ska anslutas till. Olika leverantörer tolkar detta på olika sätt. För SQL Server Native Client OLE DB-providern anger detta namnet på servern. För Jet OLE DB-providern anger detta den fullständiga sökvägen för den .mdb filen eller .xls filen.
Location DBPROP_INIT_LOCATION Plats för databasen som ska anslutas till.
Extended Properties DBPROP_INIT_PROVIDERSTRING Den providerspecifika anslutningssträngen.
Connect timeout DBPROP_INIT_TIMEOUT Timeout-värde varefter anslutningsfelet misslyckas.
User ID DBPROP_AUTH_USERID Användar-ID som ska användas för anslutningen.
Password DBPROP_AUTH_PASSWORD Lösenord som ska användas för anslutningen.
Catalog DBPROP_INIT_CATALOG Namnet på den inledande katalogen eller standardkatalogen när du ansluter till datakällan.
Integrated Security DBPROP_AUTH_INTEGRATED SSPI för att ange Windows-autentisering

Remarks

OPENROWSET ärver alltid instanssortering, oavsett sorteringsuppsättning för kolumner.

OPENDATASOURCE kan endast användas för att komma åt fjärrdata från OLE DB-datakällor när alternativet DisallowAdhocAccess-registret uttryckligen är inställt på 0 för den angivna providern, och alternativet Avancerad konfiguration för Ad Hoc Distributed Queries är aktiverat. När dessa alternativ inte har angetts tillåter standardbeteendet inte ad hoc-åtkomst.

Funktionen OPENDATASOURCE kan användas på samma Transact-SQL syntaxplatser som ett länkat servernamn. OPENDATASOURCE Kan därför användas som den första delen av ett fyradelade namn som refererar till en tabell eller ett visningsnamn i en SELECT-, INSERT-, UPDATE- eller DELETE-instruktion eller till en fjärr lagrad procedur i en EXECUTE-instruktion. I fjärranslutna procedurer OPENDATASOURCE bör du referera till en annan instans av SQL Server. OPENDATASOURCE accepterar inte variabler för sina argument.

Precis som funktionen OPENROWSETOPENDATASOURCE bör du bara referera till OLE DB-datakällor som används sällan. Definiera en länkad server för alla datakällor som används mer än flera gånger. Varken OPENDATASOURCE eller OPENROWSET tillhandahåller alla funktioner i definitioner för länkad server, till exempel säkerhetshantering och möjligheten att fråga kataloginformation. All anslutningsinformation, inklusive lösenord, måste anges varje gång som OPENDATASOURCE anropas.

Important

Windows-autentisering är mycket säkrare än SQL Server-autentisering. Du bör använda Windows-autentisering när det är möjligt. OPENDATASOURCE ska inte användas med explicita lösenord i anslutningssträngen.

Anslutningskraven för varje provider liknar kraven för dessa parametrar när du skapar länkade servrar. Information om många vanliga leverantörer visas i artikeln sp_addlinkedserver (Transact-SQL).

Alla anrop till OPENDATASOURCE, OPENQUERYeller OPENROWSET i FROM-satsen utvärderas separat och oberoende av alla anrop till dessa funktioner som används som mål för uppdateringen, även om identiska argument skickas till de två anropen. I synnerhet har filter- eller kopplingsvillkor som tillämpas på resultatet av ett av dessa anrop ingen effekt på resultatet av det andra.

Permissions

Alla användare kan köra OPENDATASOURCE. De behörigheter som används för att ansluta till fjärrservern bestäms från anslutningssträngen.

Limitations

Stöds inte med drivrutinen för Microsoft Access Database Engine.

Examples

A. Använda OPENDATASOURCE med SELECT och SQL Server OLE DB-drivrutinen

I följande exempel används Microsoft OLE DB-drivrutinen för SQL Server för att komma åt HumanResources.Department tabellen i AdventureWorks2022 databasen på fjärrservern Seattle1. En SELECT instruktion används för att definiera raduppsättningen som returneras. Providersträngen innehåller nyckelorden Server och Trusted_Connection. Dessa nyckelord identifieras av SQL Server OLE DB-drivrutinen.

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

B. Använda OPENDATASOURCE med SELECT och SQL Server OLE DB-providern

I följande exempel skapas en ad hoc-anslutning till instansen Payroll av SQL Server på servern Londonoch frågar tabellen AdventureWorks2022.HumanResources.Employee .

Note

Om du använder SQLNCLI omdirigeras SQL Server till den senaste versionen av SQL Server Native Client OLE DB-providern. OLE DB-providern förväntas vara registrerad med angiven PROGID i registret.

Important

SQL Server Native Client OLE DB-providern (SQLNCLI) är fortfarande inaktuell och vi rekommenderar inte att du använder den för nytt utvecklingsarbete. Använd i stället den nya Microsoft OLE DB-drivrutin för SQL Server (MSOLEDBSQL) som kommer att uppdateras med de senaste serverfunktionerna.

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

C. Använda Microsoft OLE DB-providern för Jet

I följande exempel skapas en ad hoc-anslutning till ett Excel-kalkylblad i formatet 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