Condividi tramite


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