Configurazione delle autorizzazioni per accedere ai dati remoti da un'origine dati OLEDB in SQL Server

Questo articolo descrive come disabilitare query ad hoc che usano o OPENROWSET la OPENDATASOURCE funzionalità in SQL Server.

Versione originale del prodotto: SQL Server
Numero KB originale: 327489

Riepilogo

È possibile usare OPENROWSET istruzioni o OPENDATASOURCE in SQL Server come metodo ad hoc per connettersi e accedere ai dati da un provider OLEDB remoto, inclusa un'istanza remota di SQL Server. Queste istruzioni possono essere usate per accedere a dati remoti da origini dati OLE DB solo quando l'opzione del Registro di sistema DisallowAdhocAccess è impostata in modo esplicito su 0 per il provider specificato e l'opzione di configurazione avanzata Ad Hoc Distributed Queries è abilitata. Quando queste opzioni non sono impostate, il comportamento predefinito non consente l'accesso ad hoc.

Questo articolo fornisce dettagli aggiuntivi sulla configurazione di DisallowAdhocAccess tramite SQL Server Management Studio e le impostazioni del Registro di sistema, nonché il comportamento predefinito.

Disabilitazione dell'accesso ad hoc con SQL Server Management Studio

Specificare la DisallowAdHocAccess proprietà per il provider in SQL Server Management Studio (SSMS)

  1. Aprire SSMS ed espandere Provider in Server collegati.

  2. Fare clic per selezionare il provider OLE DB da usare e quindi selezionare il pulsante Opzioni provider.

  3. Scorrere verso il basso e selezionare la casella di controllo Disallow adhoc access property (Disallow adhoc access property) e selezionare OK.

Disabilitazione dell'accesso ad hoc tramite l'editor del Registro di sistema

Importante

In questa sezione, metodo o attività viene illustrata la procedura per modificare il Registro di sistema. Se, tuttavia, si modifica il Registro di sistema in modo errato, possono verificarsi gravi problemi. Pertanto, assicurarsi di osservare attentamente la procedura seguente. Per una maggiore protezione, eseguire il backup del Registro di sistema prima di modificarlo. Successivamente, è possibile ripristinare il Registro di sistema se si verifica un problema. Per ulteriori informazioni su come eseguire il backup e il ripristino del Registro di sistema, vedi Come eseguire il backup e il ripristino del Registro di sistema in Windows.

Dopo il salvataggio di un server collegato, la DisallowAdHocAccess proprietà può essere impostata solo tramite un'impostazione del Registro di sistema.

Aggiungere il valore DisallowAdHocAccess

Per aggiungere il DisallowAdHocAccess valore, seguire questa procedura:

  1. Avviare l'editor del Registro di sistema.

  2. Individuare e quindi selezionare la chiave nel Registro di sistema: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\ProviderName<>

    Esempio: se si sta provando a modificare questa impostazione per il provider Microsoft OLEDB per i driver ODBC, la chiave sarà:

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Providers\MSDASQL

  3. Nel menu Modifica selezionare Aggiungi valore e quindi aggiungere questo valore del Registro di sistema:

    Value name: DisallowAdHocAccess
    Data type: REG_DWORD
    Radix: Hex
    Value data: 1
    
  4. Chiudere l'editor del Registro di sistema.

Abilitare l'accesso remoto ad hoc

Dopo aver verificato che l'opzione di configurazione avanzata Ad Hoc Distributed Queries sia abilitata, è necessario impostare l'opzione del Registro di sistema DisallowAdhocAccess su 0 per il provider specificato.

Per modificare un valore esistente DisallowAdHocAccess , seguire questa procedura:

  1. Avviare l'editor del Registro di sistema.

  2. Individuare e quindi selezionare il DisallowAdHocAccess valore nella chiave nel Registro di sistema: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\ProviderName<>

    Esempio: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Providers\Microsoft.ACE.OLEDB.12.0

  3. Nel menu Modifica selezionare DWORD, digitare 1 e quindi selezionare OK.

  4. Chiudere l'editor del Registro di sistema. Per un'istanza denominata, la chiave del Registro di sistema è diversa: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\<Instance Name>\Providers\<ProviderName>

Richiesta di riavvio

Una modifica del valore di DisallowAdHocAccess da 1 a 0 non richiederebbe un riavvio del servizio SQL, mentre una modifica da 0 a 1 dovrebbe avere un riavvio del servizio SQL per rendere effettiva la modifica apportata.

Comportamento predefinito

L'accesso ad hoc delle origini dati OLE BD remote tramite OPENROWSET e OPENDATASOURCE è disabilitato per impostazione predefinita e non è necessaria alcuna configurazione aggiuntiva. È necessario usare le procedure descritte nell'articolo solo se questo accesso remoto è stato abilitato in precedenza in modo esplicito.

Note

Con l'impostazione predefinita, se si tenta di chiamare queste funzioni nelle query ad hoc, viene visualizzato un messaggio di errore simile al seguente messaggio: Server: Msg 7415, Level 16, State 1, Line 1 Ad hoc access to OLE DB provider 'Microsoft.Jet.OLEDB.4.0' has been denied. Accedere al provider tramite un server collegato.

In altre parole, con la DisallowAdHocAccess proprietà impostata su 1 per un provider OLE DB specifico, è necessario utilizzare un'impostazione predefinita del server collegato per il provider OLE DB specifico. Non è più possibile passare un stringa di connessione ad hoc che fa riferimento a tale OPENROWSET provider alla funzione o OPENDATASOURCE .

Vedi anche