Configurazione del server: query distribuite ad hoc
Si applica a: SQL Server
Per impostazione predefinita, SQL Server non consente query distribuite ad hoc tramite OPENROWSET
e OPENDATASOURCE
. Quando questa opzione è impostata su 1
, in SQL Server è possibile l'accesso ad hoc. Quando questa opzione non è impostata o è impostata su 0
, in SQL Server non è possibile l'accesso ad hoc.
Le query distribuite ad hoc utilizzano le funzioni OPENROWSET
e OPENDATASOURCE
per connettersi alle origini dei dati remote che utilizzano OLE DB. È consigliabile utilizzare le funzioni OPENROWSET
e OPENDATASOURCE
solo per fare riferimento a origini dei dati OLE DB a cui si accede raramente. Per le origini dei dati a cui è necessario accedere con maggiore frequenza, è possibile definire un server collegato.
Se si consente l'uso dei nomi ad hoc, tutti gli account di accesso a SQL Server autenticati potranno accedere al provider. SQL Server richiede che gli amministratori abilitino questa funzionalità per i provider a cui è possibile accedere in modo sicuro tramite qualsiasi account di accesso locale.
Osservazioni:
Se si prova a creare una connessione ad hoc con Ad Hoc Distributed Queries
disabilitate, verrà visualizzato l'errore seguente:
Msg 7415, Level 16, State 1, Line 1
Ad hoc access to OLE DB provider 'Microsoft.ACE.OLEDB.12.0' has been denied. You must access this provider through a linked server.
Database SQL di Azure e Istanza gestita di SQL di Azure
Per informazioni di riferimento, vedere Confronto di funzionalità: database SQL di Azure e Istanza gestita di SQL di Azure.
Esempi
Nell'esempio seguente viene abilitata l'opzione Ad Hoc Distributed Queries
; successivamente, viene eseguita una query su un server denominato Seattle1
utilizzando la funzione OPENROWSET
.
USE master;
GO
EXECUTE sp_configure 'show advanced options', 1;
GO
RECONFIGURE;
GO
EXECUTE sp_configure 'Ad Hoc Distributed Queries', 1;
GO
RECONFIGURE;
GO
SELECT a.*
FROM OPENROWSET ('MSOLEDBSQL', 'Server=Seattle1;Trusted_Connection=yes;', 'SELECT GroupName, Name, DepartmentID
FROM AdventureWorks2022.HumanResources.Department
ORDER BY GroupName, Name') AS a;
GO
EXECUTE sp_configure 'show advanced options', 0;
GO
RECONFIGURE;
GO