Identificazione di un'origine dei dati tramite un nome ad hoc

Se a una determinata origine dei dati OLE DB non viene fatto riferimento abbastanza spesso da giustificare la configurazione di un server collegato, per fare riferimento alle tabelle sarà possibile utilizzare nomi ad hoc. Per specificare un nome ad hoc, in SQL Server è possibile utilizzare le funzioni OPENROWSET e OPENDATASOURCE.

Il controllo dell'accesso a origini dei dati specifiche è disponibile solo tramite server collegati. Poiché tale controllo non è disponibile per i nomi ad hoc, questi ultimi sono disattivati tramite un'impostazione predefinita per tutti i provider OLE DB, ad eccezione del provider OLE DB SQL Server Native Client.

Nota importanteImportante

Per ogni istanza di SQL Server, i membri del ruolo predefinito del server sysadmin possono attivare o disattivare l'utilizzo dei nomi di connettore ad hoc per un provider OLE DB tramite l'opzione DisallowAdhocAccess del provider e l'opzione di configurazione del server Ad Hoc Distributed Queries. Quando l'acceso ad hoc è attivato tutti gli utenti connessi all'istanza possono eseguire istruzioni SQL contenenti nomi di connettore ad hoc che fanno riferimento a qualsiasi origine dei dati sulla rete a cui è possibile accedere tramite il provider OLE DB. Per controllare l'accesso alle origini dei dati, i membri del ruolo sysadmin possono disattivare l'accesso ad hoc per i provider OLE DB corrispondenti, limitando in tal modo l'accesso da parte degli utenti alle sole origini dei dati a cui viene fatto riferimento dai nomi dei server collegati definiti dagli amministratori. Per impostazione predefinita, l'accesso ad hoc è attivato per il provider OLE DB SQL Server Native Client e disattivato per tutti gli altri provider OLE DB.

Sia OPENROWSET che OPENDATASOURCE forniscono informazioni sulla connessione ad hoc. È possibile utilizzare tali funzioni per specificare tutte le informazioni necessarie per accedere all'origine dei dati OLE DB. Non è tuttavia possibile utilizzare indifferentemente OPENROWSET e OPENDATASOURCE:

  • È possibile utilizzare OPENROWSET se il provider OLE DB restituisce set di righe, specificando il nome di una tabella o vista oppure una query che restituisce un set di righe. La funzione OPENROWSET può essere utilizzata al posto del nome di una tabella o vista in un'istruzione Transact-SQL.

  • Utilizzare OPENDATASOURCE solo se il provider espone set di righe e utilizza la notazione catalog**.schema.object. La funzione OPENDATASOURCE può essere utilizzata in tutti i punti della sintassi Transact-SQL in cui è possibile utilizzare il nome di un server collegato. Nella notazione catalog.schema.**object, pertanto, la funzione OPENDATASOURCE può essere utilizzata come prima parte del nome in quattro parti utilizzato per fare riferimento a una tabella o a una vista.

Utilizzare OPENROWSET e OPENDATASOURCE solo per l'accesso a dati esterni in situazioni ad hoc, quando non è possibile configurare un server collegato permanente. Tali funzioni non offrono tutte le funzionalità disponibili in un server collegato, ad esempio la gestione dei mapping degli account di accesso, la possibilità di eseguire query sui metadati del server collegato e la possibilità di configurare varie impostazioni di connessione, quali i valori di timeout.

Nota sulla protezioneNota sulla protezione

Per la connessione a un'altra origine dei dati, SQL Server è in grado di rappresentare in modo appropriato gli account di accesso con autenticazione Windows. SQL Server non è tuttavia in grado di rappresentare account di accesso con autenticazione SQL Server. Per gli account di accesso con autenticazione SQL Server, SQL Server può accedere pertanto ad altre origini dei dati, ad esempio file, origini dei dati non relazionali quale Active Directory, utilizzando il contesto di protezione dell'account di Windows con cui viene eseguito il servizio SQL Server. In questo modo è possibile che tali account riescano ad accedere anche a origini dei dati per cui non sono autorizzati, ma per cui possiede autorizzazioni l'account con cui viene eseguito il servizio SQL Server. Questa eventualità deve essere presa in considerazione, quando si utilizzano account di accesso con autenticazione SQL Server.

Gli argomenti delle funzioni OPENROWSET e OPENDATASOURCE non supportano le variabili e devono essere specificati come stringhe letterali. Se è necessario passare variabili come argomenti, è possibile costruire dinamicamente una stringa di query che contiene le variabili ed eseguirla tramite l'istruzione EXECUTE.