Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
gäller för:SQL Server
Azure 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$] ;