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

Si applica a:Applies to: sìSQL ServerSQL Server (tutte le versioni supportate) yesSQL ServerSQL Server (all supported versions) SìIstanza gestita di SQL di AzureAzure SQL Managed InstanceYesIstanza gestita di SQL di AzureAzure SQL Managed InstanceSi applica a:Applies to: sìSQL ServerSQL Server (tutte le versioni supportate) yesSQL ServerSQL Server (all supported versions) SìIstanza gestita di SQL di AzureAzure SQL Managed InstanceYesIstanza gestita di SQL di AzureAzure SQL Managed Instance

Restituisce informazioni sulla connessione ad hoc all'interno di un nome di oggetto in quattro parti, senza utilizzare il nome di un server collegato.Provides ad hoc connection information as part of a four-part object name without using a linked server name.

Icona di collegamento Convenzioni della sintassi Transact-SQLlink icon Transact-SQL Syntax Conventions

SintassiSyntax

OPENDATASOURCE ( 'provider_name', 'init_string' )  

Nota

Per visualizzare la sintassi Transact-SQL per SQL Server 2014 e versioni precedenti, vedere Documentazione delle versioni precedenti.To view Transact-SQL syntax for SQL Server 2014 and earlier, see Previous versions documentation.

ArgomentiArguments

'provider_name''provider_name'
Nome registrato come valore PROGID del provider OLE DB utilizzato per l'accesso all'origine dati.Is the name registered as the PROGID of the OLE DB provider used to access the data source. provider_name è un tipo di dati char e non prevede alcun valore predefinito.provider_name is a char data type, with no default value.

Importante

Il provider Microsoft OLE DB per SQL Server (SQLOLEDB) e il provider OLE DB SQL Server Native Client (SQLNCLI) precedenti rimangono deprecati e non è consigliabile usarli per nuovi progetti di sviluppo.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. Usare invece il nuovo Microsoft OLE DB Driver per SQL Server (MSOLEDBSQL) che verrà aggiornato con le funzionalità server più recenti.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'
Stringa di connessione passata all'interfaccia IDataInitialize del provider di destinazione.Is the connection string passed to the IDataInitialize interface of the destination provider. La sintassi della stringa del provider si basa su coppie chiave/valore separate da punti e virgola, ad esempio: ' chiave1=valore ; chiave2=valore ' .The provider string syntax is based on keyword-value pairs separated by semicolons, such as: 'keyword1=value ; keyword2=value'.

Per informazioni sulle coppie parola chiave/valore specifiche supportate nel provider, vedere MicrosoftMicrosoft Data Access SDK.For specific keyword-value pairs supported on the provider, see the MicrosoftMicrosoft Data Access SDK. In questa documentazione è definita la sintassi di base.This documentation defines the basic syntax. Nella tabella seguente sono elencate le parole chiave di più frequente utilizzo nell'argomento init_string.The following table lists the most frequently used keywords in the init_string argument.

Parola chiaveKeyword Proprietà OLE DBOLE DB property Valori validi e descrizioneValid values and description
origine datiData Source DBPROP_INIT_DATASOURCEDBPROP_INIT_DATASOURCE Nome dell'origine dei dati a cui connettersi.Name of the data source to connect to. Viene interpretato in modo diverso nei vari provider.Different providers interpret this in different ways. Per il provider OLE DB per SQL ServerSQL Server Native Client, indica il nome del server.For SQL ServerSQL Server Native Client OLE DB provider, this indicates the name of the server. Per il provider OLE DB di Jet indica il percorso completo del file mdb o xls.For Jet OLE DB provider, this indicates the full path of the .mdb file or .xls file.
LocationLocation DBPROP_INIT_LOCATIONDBPROP_INIT_LOCATION Posizione del database a cui connettersi.Location of the database to connect to.
Extended PropertiesExtended Properties DBPROP_INIT_PROVIDERSTRINGDBPROP_INIT_PROVIDERSTRING Stringa di connessione specifica del provider.The provider-specific connect-string.
Connect timeoutConnect timeout DBPROP_INIT_TIMEOUTDBPROP_INIT_TIMEOUT Valore di timeout trascorso il quale il tentativo di connessione viene considerato non riuscito.Time out value after which the connection try fails.
ID utenteUser ID DBPROP_AUTH_USERIDDBPROP_AUTH_USERID ID utente da utilizzare per la connessione.User ID to be used for the connection.
PasswordPassword DBPROP_AUTH_PASSWORDDBPROP_AUTH_PASSWORD Password da utilizzare per la connessione.Password to be used for the connection.
CatalogoCatalog DBPROP_INIT_CATALOGDBPROP_INIT_CATALOG Nome del catalogo iniziale o predefinito nella connessione all'origine dei dati.The name of the initial or default catalog when connecting to the data source.
Sicurezza integrataIntegrated Security DBPROP_AUTH_INTEGRATEDDBPROP_AUTH_INTEGRATED SSPI per specificare l'autenticazione di Windows.SSPI, to specify Windows Authentication

CommentiRemarks

OPENROWSET eredita sempre le regole di confronto dell'istanza, indipendentemente dalle regole di confronto impostate per le colonne.OPENROWSET always inherits the instance collation, irrespective of collation set for columns.

È possibile usare OPENDATASOURCE per accedere ai dati remoti da origini dati OLE DB solo se l'opzione del Registro di sistema DisallowAdhocAccess è impostata esplicitamente su 0 per il provider specificato e l'opzione di configurazione avanzata Ad Hoc Distributed Queries è abilitata.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. Quando queste opzioni non vengono impostate, il comportamento predefinito non consente l'accesso ad hoc.When these options are not set, the default behavior does not allow for ad hoc access.

La funzione OPENDATASOURCE può essere usata nella stessa posizione della sintassi Transact-SQLTransact-SQL in cui è consentito specificare un nome di server collegato.The OPENDATASOURCE function can be used in the same Transact-SQLTransact-SQL syntax locations as a linked-server name. È pertanto possibile usare OPENDATASOURCE come prima parte di un nome composto da quattro parti che fa riferimento a un nome di tabella o vista in un'istruzione SELECT, INSERT, UPDATE o DELETE oppure a una stored procedure remota in un'istruzione EXECUTE.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. Durante l'esecuzione di stored procedure remote la funzione OPENDATASOURCE deve fare riferimento a un'altra istanza di SQL ServerSQL Server.When executing remote stored procedures, OPENDATASOURCE should refer to another instance of SQL ServerSQL Server. La funzione non accetta variabili come argomenti.OPENDATASOURCE does not accept variables for its arguments.

In modo analogo alla funzione OPENROWSET, è consigliabile usare la funzione OPENDATASOURCE solo per fare riferimento a origini dei dati OLE DB a cui si accede raramente.Like the OPENROWSET function, OPENDATASOURCE should only reference OLE DB data sources that are accessed infrequently. Per le origini dei dati a cui si accede con maggiore frequenza definire un server collegato.Define a linked server for any data sources accessed more than several times. Sia OPENDATASOURCE che OPENROWSET non offrono tutte le funzionalità delle definizioni di server collegati, quali la gestione della sicurezza e la possibilità di eseguire query per ottenere informazioni sui cataloghi.Neither OPENDATASOURCE nor OPENROWSET provides all the functionality of linked-server definitions, such as security management and the ability to query catalog information. A ogni chiamata della funzione OPENDATASOURCE è necessario fornire tutte le informazioni di connessione, comprese le password.All connection information, including passwords, must be provided every time that OPENDATASOURCE is called.

Importante

L'autenticazione di Windows offre una sicurezza decisamente maggiore rispetto all'autenticazione di SQL ServerSQL Server.Windows Authentication is much more secure than SQL ServerSQL Server Authentication. Quando possibile, utilizzare l'autenticazione di Windows.You should use Windows Authentication whenever possible. OPENDATASOURCE non deve essere usata con password esplicite nella stringa di connessione.OPENDATASOURCE should not be used with explicit passwords in the connection string.

I requisiti relativi alla connessione per ogni provider sono analoghi a quelli per i parametri utilizzati durante la creazione di server collegati.The connection requirements for each provider are similar to the requirements for those parameters when creating linked servers. I dettagli per molti provider di utilizzo comune sono disponibili nell'articolo sp_addlinkedserver (Transact-SQL).The details for many common providers are listed in the article sp_addlinkedserver (Transact-SQL).

Qualsiasi chiamata a OPENDATASOURCE, OPENQUERY r OPENROWSET nella clausola FROM viene valutata separatamente e indipendentemente da qualsiasi altra chiamata a queste funzioni usate come destinazione dell'aggiornamento, anche se alle due chiamate vengono forniti argomenti identici.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. In particolare, le condizioni di filtro o join applicate al risultato di una di tali chiamate non hanno effetto sui risultati dell'altra.In particular, filter or join conditions applied on the result of one of those calls has no effect on the results of the other.

AutorizzazioniPermissions

Qualsiasi utente può eseguire OPENDATASOURCE.Any user can execute OPENDATASOURCE. Le autorizzazioni utilizzate per connettersi al server remoto sono determinate dalla stringa di connessione.The permissions that are used to connect to the remote server are determined from the connection string.

EsempiExamples

R.A. Uso di OPENDATASOURCE con SELECT e OLE DB Driver per SQL ServerUsing OPENDATASOURCE with SELECT and the SQL Server OLE DB Driver

L'esempio seguente usa il provider Microsoft OLE DB Driver per SQL Server per accedere alla tabella HumanResources.Department nel database AdventureWorks2012AdventureWorks2012 nel server remoto Seattle1.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. Viene usata un'istruzione SELECT per definire il set di righe restituito.A SELECT statement is used to define the row set returned. La stringa del provider contiene le parole chiave Server e Trusted_Connection.The provider string contains the Server and Trusted_Connection keywords. Queste parole chiave sono riconosciute da OLE DB Driver per SQL ServerSQL Server.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. Uso di OPENDATASOURCE con SELECT e il provider OLE DB per SQL ServerUsing OPENDATASOURCE with SELECT and the SQL Server OLE DB Provider

Nell'esempio seguente viene creata una connessione ad hoc all'istanza Payroll di SQL ServerSQL Server nel server London e viene eseguita una query sulla tabella AdventureWorks2012.HumanResources.Employee.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.

Nota

L'uso di SQLNCLI reindirizzerà SQL ServerSQL Server alla versione più recente del provider OLE DB per SQL Server Native Client.Using SQLNCLI will redirect SQL ServerSQL Server to the latest version of SQL Server Native Client OLE DB Provider. Il provider OLE DB deve essere registrato nel Registro di sistema con il valore PROGID specificato.The OLE DB provider is expected to be registered with the specified PROGID in the registry.

Importante

Il provider OLE DB per SQL Server Native Client (SQLNCLI) rimane deprecato e non è consigliabile usarlo per nuovi progetti di sviluppo.SQL Server Native Client OLE DB provider (SQLNCLI) remains deprecated and it is not recommended to use it for new development work. Usare invece il nuovo Microsoft OLE DB Driver per SQL Server (MSOLEDBSQL) che verrà aggiornato con le funzionalità server più recenti.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. Utilizzo del provider Microsoft OLE DB per JetUsing the Microsoft OLE DB Provider for Jet

Nell'esempio seguente viene creata una connessione ad hoc a un foglio di calcolo di Excel in formato 1997 - 2003.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$] ;  

Vedere ancheSee Also

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