OPENDATASOURCE (Transact-SQL)
Si applica a: SQL Server (tutte le versioni supportate)
Istanza gestita di SQL di Azure
Restituisce informazioni sulla connessione ad hoc all'interno di un nome di oggetto in quattro parti, senza utilizzare il nome di un server collegato.
Convenzioni di sintassi Transact-SQL
Sintassi
OPENDATASOURCE ( 'provider_name', 'init_string' )
Nota
Per visualizzare la sintassi Transact-SQL per SQL Server 2014 e versioni precedenti, vedere Documentazione delle versioni precedenti.
Argomenti
'provider_name'
Nome registrato come valore PROGID del provider OLE DB utilizzato per l'accesso all'origine dati. provider_name è un tipo di dati char e non prevede alcun valore predefinito.
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. Usare invece il nuovo Microsoft OLE DB Driver per SQL Server (MSOLEDBSQL) che verrà aggiornato con le funzionalità server più recenti.
'init_string'
Stringa di connessione passata all'interfaccia IDataInitialize del provider di destinazione. La sintassi della stringa del provider si basa su coppie chiave/valore separate da punti e virgola, ad esempio: 'chiave1=valore;chiave2=valore'.
Per coppie chiave-valore specifiche supportate nel provider, vedere Microsoft Data Access SDK. In questa documentazione è definita la sintassi di base. Nella tabella seguente sono elencate le parole chiave di più frequente utilizzo nell'argomento init_string.
Parola chiave | Proprietà OLE DB | Valori validi e descrizione |
---|---|---|
origine dati | DBPROP_INIT_DATASOURCE | Nome dell'origine dei dati a cui connettersi. Viene interpretato in modo diverso nei vari provider. Per il provider OLE DB di SQL Server Native Client, questo indica il nome del server. Per il provider OLE DB di Jet indica il percorso completo del file mdb o xls. |
Location | DBPROP_INIT_LOCATION | Posizione del database a cui connettersi. |
Extended Properties | DBPROP_INIT_PROVIDERSTRING | Stringa di connessione specifica del provider. |
Connect timeout | DBPROP_INIT_TIMEOUT | Valore di timeout trascorso il quale il tentativo di connessione viene considerato non riuscito. |
ID utente | DBPROP_AUTH_USERID | ID utente da utilizzare per la connessione. |
Password | DBPROP_AUTH_PASSWORD | Password da utilizzare per la connessione. |
Catalogo | DBPROP_INIT_CATALOG | Nome del catalogo iniziale o predefinito nella connessione all'origine dei dati. |
Sicurezza integrata | DBPROP_AUTH_INTEGRATED | SSPI per specificare l'autenticazione di Windows. |
Commenti
OPENROWSET
eredita sempre le regole di confronto dell'istanza, indipendentemente dalle regole di confronto impostate per le colonne.
È 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. Quando queste opzioni non vengono impostate, il comportamento predefinito non consente l'accesso ad hoc.
La OPENDATASOURCE
funzione può essere usata nelle stesse posizioni della sintassi Transact-SQL come nome del server collegato. È 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. Quando si eseguono stored procedure remote, OPENDATASOURCE
fare riferimento a un'altra istanza di SQL Server. La funzione non accetta variabili come argomenti.
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. Per le origini dei dati a cui si accede con maggiore frequenza definire un server collegato. 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. A ogni chiamata della funzione OPENDATASOURCE è necessario fornire tutte le informazioni di connessione, comprese le password.
Importante
L'autenticazione di Windows offre una sicurezza decisamente maggiore rispetto all'autenticazione di SQL Server. Quando possibile, utilizzare l'autenticazione di Windows. OPENDATASOURCE
non deve essere usata con password esplicite nella stringa di connessione.
I requisiti relativi alla connessione per ogni provider sono analoghi a quelli per i parametri utilizzati durante la creazione di server collegati. I dettagli per molti provider comuni sono elencati nell'articolo 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. In particolare, le condizioni di filtro o join applicate al risultato di una di tali chiamate non hanno effetto sui risultati dell'altra.
Autorizzazioni
Qualsiasi utente può eseguire OPENDATASOURCE. Le autorizzazioni utilizzate per connettersi al server remoto sono determinate dalla stringa di connessione.
Esempi
R. Uso di OPENDATASOURCE con SELECT e OLE DB Driver per SQL Server
Nell'esempio seguente viene usato Microsoft OLE DB Driver per SQL Server per accedere alla HumanResources.Department
tabella nel database AdventureWorks2012 nel server Seattle1
remoto .
Viene usata un'istruzione SELECT
per definire il set di righe restituito. La stringa del provider contiene le parole chiave Server
e Trusted_Connection
. Queste parole chiave vengono riconosciute dal driver OLE DB di SQL Server.
SELECT GroupName, Name, DepartmentID
FROM OPENDATASOURCE('MSOLEDBSQL', 'Server=Seattle1;Database=AdventureWorks2016;TrustServerCertificate=Yes;Trusted_Connection=Yes;').HumanResources.Department
ORDER BY GroupName, Name;
B. Uso di OPENDATASOURCE con SELECT e il provider OLE DB per SQL Server
Nell'esempio seguente viene creata una connessione ad hoc all'istanza Payroll
di SQL Server nel server London
e viene eseguita una query sulla AdventureWorks2012.HumanResources.Employee
tabella.
Nota
L'uso di SQLNCLI reindirizzerà SQL Server alla versione più recente del provider OLE DB di SQL Server Native Client. Il provider OLE DB deve essere registrato nel Registro di sistema con il valore PROGID specificato.
Importante
Il provider OLE DB per SQL Server Native Client (SQLNCLI) rimane deprecato e non è consigliabile usarlo per nuovi progetti di sviluppo. Usare invece il nuovo Microsoft OLE DB Driver per SQL Server (MSOLEDBSQL) che verrà aggiornato con le funzionalità server più recenti.
SELECT *
FROM OPENDATASOURCE('SQLNCLI',
'Data Source=London\Payroll;Integrated Security=SSPI')
.AdventureWorks2012.HumanResources.Employee;
C. Utilizzo del provider Microsoft OLE DB per Jet
Nell'esempio seguente viene creata una connessione ad hoc a un foglio di calcolo di Excel in formato 1997 - 2003.
SELECT * FROM OPENDATASOURCE('Microsoft.Jet.OLEDB.4.0',
'Data Source=C:\DataFolder\Documents\TestExcel.xls;Extended Properties=EXCEL 5.0')...[Sheet1$] ;