OPENDATASOURCE (Transact-SQL)OPENDATASOURCE (Transact-SQL)

GILT FÜR: jaSQL Server jaAzure SQL-Datenbank (nur verwaltete Instanz) neinAzure SQL Data Warehouse neinParallel Data WarehouseAPPLIES TO: yesSQL Server yesAzure SQL Database (Managed Instance only) noAzure SQL Data Warehouse noParallel Data Warehouse

Stellt Ad-hoc-Verbindungsinformationen als Teil eines vierteiligen Objektnamens ohne Verwendung eines Verbindungsservernamens bereit.Provides ad hoc connection information as part of a four-part object name without using a linked server name.

Linksymbol Transact-SQL-Syntaxkonventionenlink icon Transact-SQL Syntax Conventions

SyntaxSyntax

OPENDATASOURCE ( 'provider_name', 'init_string' )  

ArgumenteArguments

'provider_name''provider_name'
Der Namen, der als PROGID des OLE DB-Anbieters für den Zugriff auf die Datenquelle registriert ist.Is the name registered as the PROGID of the OLE DB provider used to access the data source. provider_name ist vom Datentyp char und verfügt über keinen Standardwert.provider_name is a char data type, with no default value.

Wichtig

Der vorherige Microsoft OLE DB-Anbieter für SQL Server (SQLOLEDB) und SQL Server Native Client OLE DB-Anbieter (SQLNCLI) bleiben als veraltet markiert und sollten nicht mehr für neue Bereitstellungen verwendet werden.The previous Microsoft OLE DB Provider for SQL Server (SQLOLEDB) and SQL Server Native Client OLE DB provider (SQLNCLI) remain deprecated and it is not recommended to use either for new development work. Verwenden Sie stattdessen den neuen Microsoft OLE DB-Treiber für SQL Server (MSOLEDBSQL), der mit den aktuellsten Serverfeatures aktualisiert wird.Instead, use the new Microsoft OLE DB Driver for SQL Server (MSOLEDBSQL) which will be updated with the most recent server features.

'init_string''init_string'
Die Verbindungszeichenfolge, die an die IDataInitialize-Schnittstelle des Zielanbieters übergeben wird.Is the connection string passed to the IDataInitialize interface of the destination provider. Die Syntax der Anbieterzeichenfolge basiert auf durch Semikolons getrennten Schlüssel-Wert-Paaren im folgenden Format: ' keyword1=value ; keyword2=value ' .The provider string syntax is based on keyword-value pairs separated by semicolons, such as: 'keyword1=value ; keyword2=value'.

Informationen zu bestimmten, vom Anbieter unterstützten Paaren aus Schlüsselwort und Wert finden Sie im MDAC SDK (MicrosoftMicrosoft Data Access Components Software Development Kit).For specific keyword-value pairs supported on the provider, see the MicrosoftMicrosoft Data Access SDK. In dieser Dokumentation wird die grundlegende Syntax definiert.This documentation defines the basic syntax. In der folgenden Tabelle werden die am häufigsten im init_string-Argument verwendeten Schlüsselwörter aufgelistet.The following table lists the most frequently used keywords in the init_string argument.

SchlüsselwortKeyword OLE DB-EigenschaftOLE DB property Gültige Werte und BeschreibungValid values and description
DatenquelleData Source DBPROP_INIT_DATASOURCEDBPROP_INIT_DATASOURCE Name der Datenquelle, mit der eine Verbindung hergestellt werden soll.Name of the data source to connect to. Unterschiedliche Anbieter interpretieren diesen Namen auf unterschiedliche Arten.Different providers interpret this in different ways. Für den OLE DB-Anbieter von SQL ServerSQL Server Native Client gibt er den Servernamen an.For SQL ServerSQL Server Native Client OLE DB provider, this indicates the name of the server. Für den OLE DB-Anbieter von Jet gibt er den vollständigen Pfad der MDB- oder XLS-Datei an.For Jet OLE DB provider, this indicates the full path of the .mdb file or .xls file.
SpeicherortLocation DBPROP_INIT_LOCATIONDBPROP_INIT_LOCATION Speicherort der Datenbank, mit der eine Verbindung hergestellt werden soll.Location of the database to connect to.
Extended PropertiesExtended Properties DBPROP_INIT_PROVIDERSTRINGDBPROP_INIT_PROVIDERSTRING Anbieterspezifische Verbindungszeichenfolge.The provider-specific connect-string.
Connect timeoutConnect timeout DBPROP_INIT_TIMEOUTDBPROP_INIT_TIMEOUT Timeoutwert, bei dessen Erreichen der Verbindungsversuch einen Fehler verursacht.Time out value after which the connection try fails.
Benutzer-IDUser ID DBPROP_AUTH_USERIDDBPROP_AUTH_USERID Für die Verbindung zu verwendende Benutzer-ID.User ID to be used for the connection.
KennwortPassword DBPROP_AUTH_PASSWORDDBPROP_AUTH_PASSWORD Für die Verbindung zu verwendendes Kennwort.Password to be used for the connection.
KatalogCatalog DBPROP_INIT_CATALOGDBPROP_INIT_CATALOG Name des Anfangs- oder Standardkatalogs beim Herstellen einer Verbindung mit der Datenquelle.The name of the initial or default catalog when connecting to the data source.
Integrierte SicherheitIntegrated Security DBPROP_AUTH_INTEGRATEDDBPROP_AUTH_INTEGRATED SSPI, zur Angabe der Windows-AuthentifizierungSSPI, to specify Windows Authentication

RemarksRemarks

OPENROWSET erbt immer die Sortierung der Instanz, unabhängig von der für Spalten festgelegten Sortierung.OPENROWSET always inherits the instance collation, irrespective of collation set for columns.

Mit OPENDATASOURCE kann nur auf Remotedaten von OLE DB-Datenquellen zugegriffen werden, wenn für den angegebenen Anbieter die Registrierungsoption DisallowAdhocAccess explizit auf 0 festgelegt wird und wenn die erweiterte Konfigurationsoption „Ad Hoc Distributed Queries“ aktiviert ist.OPENDATASOURCE can be used to access remote data from OLE DB data sources only when the DisallowAdhocAccess registry option is explicitly set to 0 for the specified provider, and the Ad Hoc Distributed Queries advanced configuration option is enabled. Wenn diese Optionen nicht festgelegt sind, ermöglicht das Standardverhalten keinen Ad-hoc-Zugriff.When these options are not set, the default behavior does not allow for ad hoc access.

Die OPENDATASOURCE-Funktion kann in der Transact-SQLTransact-SQL-Syntax an denselben Stellen verwendet werden wie ein Verbindungsservername.The OPENDATASOURCE function can be used in the same Transact-SQLTransact-SQL syntax locations as a linked-server name. Deshalb kann OPENDATASOURCE als erster Teil eines vierteiligen Namens verwendet werden, der in einer SELECT-, INSERT-, UPDATE-, oder DELETE-Anweisung auf einen Tabellen- oder Sichtnamen bzw. in einer EXECUTE-Anweisung auf eine remote gespeicherte Prozedur verweist.Therefore, OPENDATASOURCE can be used as the first part of a four-part name that refers to a table or view name in a SELECT, INSERT, UPDATE, or DELETE statement, or to a remote stored procedure in an EXECUTE statement. Beim Ausführen von remote gespeicherten Prozeduren muss OPENDATASOURCE auf eine andere SQL ServerSQL Server-Instanz verweisen.When executing remote stored procedures, OPENDATASOURCE should refer to another instance of SQL ServerSQL Server. Für die Argumente von OPENDATASOURCE können keine Variablen verwendet werden.OPENDATASOURCE does not accept variables for its arguments.

Wie die OPENROWSET-Funktion sollte OPENDATASOURCE nur auf OLE DB-Datenquellen verweisen, auf die selten zugegriffen wird.Like the OPENROWSET function, OPENDATASOURCE should only reference OLE DB data sources that are accessed infrequently. Definieren Sie Verbindungsserver für Datenquellen, auf die nicht nur ein paar Mal zugegriffen wird.Define a linked server for any data sources accessed more than several times. Weder OPENDATASOURCE noch OPENROWSET stellt die gesamte Funktionalität einer Verbindungsserverdefinition bereit, wie die Sicherheitsverwaltung und die Möglichkeit, Kataloginformationen abzufragen.Neither OPENDATASOURCE nor OPENROWSET provides all the functionality of linked-server definitions, such as security management and the ability to query catalog information. Alle Verbindungsinformationen, einschließlich Kennwörtern, müssen bei jedem Aufruf von OPENDATASOURCE bereitgestellt werden.All connection information, including passwords, must be provided every time that OPENDATASOURCE is called.

Wichtig

Die Windows-Authentifizierung bietet deutlich mehr Sicherheit als die SQL ServerSQL Server-Authentifizierung.Windows Authentication is much more secure than SQL ServerSQL Server Authentication. Verwenden Sie nach Möglichkeit die Windows-Authentifizierung.You should use Windows Authentication whenever possible. OPENDATASOURCE sollte nicht mit expliziten Kennwörtern in der Verbindungszeichenfolge verwendet werden.OPENDATASOURCE should not be used with explicit passwords in the connection string.

Die Verbindungsanforderungen für jeden Anbieter sind vergleichbar mit den Anforderungen an die Parameter, die zum Erstellen von Verbindungsservern verwendet werden.The connection requirements for each provider are similar to the requirements for those parameters when creating linked servers. Details für viele gängige Anbieter sind im Artikel sp_addlinkedserver (Transact-SQL) aufgeführt.The details for many common providers are listed in the article sp_addlinkedserver (Transact-SQL).

Jeder Aufruf von OPENDATASOURCE, OPENQUERY oder OPENROWSET in der FROM-Klausel wird einzeln und unabhängig von anderen Aufrufen dieser Funktionen ausgewertet, die als Ziel des Updates verwendet werden, auch wenn für die beiden Aufrufe identische Argumente angegeben werden.Any call to OPENDATASOURCE, OPENQUERY, or OPENROWSET in the FROM clause is evaluated separately and independently from any call to these functions used as the target of the update, even if identical arguments are supplied to the two calls. Insbesondere haben Filter- oder Joinbedingungen, die auf das Ergebnis eines dieser Aufrufe angewendet werden, keine Auswirkungen auf die Ergebnisse des jeweils anderen.In particular, filter or join conditions applied on the result of one of those calls has no effect on the results of the other.

BerechtigungenPermissions

Jeder Benutzer kann OPENDATASOURCE ausführen.Any user can execute OPENDATASOURCE. Die Berechtigungen, die zum Herstellen einer Verbindung mit dem Remoteserver verwendet werden, werden anhand der Verbindungszeichenfolge bestimmt.The permissions that are used to connect to the remote server are determined from the connection string.

BeispieleExamples

A.A. Verwenden von OPENDATASOURCE mit SELECT und dem SQL Server OLE DB-TreiberUsing OPENDATASOURCE with SELECT and the SQL Server OLE DB Driver

Im folgenden Beispiel wird der Microsoft OLE DB-Treiber für SQL Server für den Zugriff auf die HumanResources.Department-Tabelle in der AdventureWorks2012AdventureWorks2012-Datenbank auf dem Remoteserver Seattle1 verwendet.The following example uses the Microsoft OLE DB Driver for SQL Server to access the HumanResources.Department table in the AdventureWorks2012AdventureWorks2012 database on the remote server Seattle1. Mithilfe einer SELECT-Anweisung wird das zurückgegebene Rowset definiert.A SELECT statement is used to define the row set returned. Die Anbieterzeichenfolge enthält die Schlüsselwörter Server und Trusted_Connection.The provider string contains the Server and Trusted_Connection keywords. Diese Schlüsselwörter werden vom SQL ServerSQL Server OLE DB-Treiber erkannt.These keywords are recognized by the SQL ServerSQL Server OLE DB Driver.

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

B.B. Verwenden von OPENDATASOURCE mit SELECT und dem SQL Server OLE DB-AnbieterUsing OPENDATASOURCE with SELECT and the SQL Server OLE DB Provider

Im folgenden Beispiel wird eine Ad-hoc-Verbindung mit der Payroll-Instanz von SQL ServerSQL Server auf dem Server London erstellt und die AdventureWorks2012.HumanResources.Employee-Tabelle abgefragt.The following example creates an ad hoc connection to the Payroll instance of SQL ServerSQL Server on server London, and queries the AdventureWorks2012.HumanResources.Employee table.

Hinweis

Die Verwendung von SQLNCLI bewirkt eine Umleitung von SQL ServerSQL Server zur neuesten Version des SQL Server Native Client OLE DB-Anbieters.Using SQLNCLI will redirect SQL ServerSQL Server to the latest version of SQL Server Native Client OLE DB Provider. Es wird vorausgesetzt, dass der OLE DB-Anbieter mit der angegebenen PROGID in der Registrierung registriert ist.The OLE DB provider is expected to be registered with the specified PROGID in the registry.

Wichtig

Der SQL Server Native Client OLE DB-Anbieter (SQLNCLI) bleibt als veraltet markiert und sollte nicht mehr für neue Bereitstellungen verwendet werden.SQL Server Native Client OLE DB provider (SQLNCLI) remains deprecated and it is not recommended to use it for new development work. Verwenden Sie stattdessen den neuen Microsoft OLE DB-Treiber für SQL Server (MSOLEDBSQL), der mit den aktuellsten Serverfeatures aktualisiert wird.Instead, use the new Microsoft OLE DB Driver for SQL Server (MSOLEDBSQL) which will be updated with the most recent server features.

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

C.C. Verwenden des Microsoft OLE DB-Anbieters für JetUsing the Microsoft OLE DB Provider for Jet

Im folgenden Beispiel wird eine Ad-hoc-Verbindung zu einem Excel-Arbeitsblatt im Format 1997 – 2003 hergestellt.The following example creates an ad hoc connection to an Excel spreadsheet in the 1997 - 2003 format.

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

Weitere InformationenSee Also

OPENROWSET (Transact-SQL) OPENROWSET (Transact-SQL)
sp_addlinkedserver (Transact-SQL)sp_addlinkedserver (Transact-SQL)