Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
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)
Aprire SSMS ed espandere Provider in Server collegati.
Fare clic per selezionare il provider OLE DB da usare e quindi selezionare il pulsante Opzioni provider.
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:
Avviare l'editor del Registro di sistema.
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\MSDASQLNel 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: 1Chiudere 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:
Avviare l'editor del Registro di sistema.
Individuare e quindi selezionare il
DisallowAdHocAccessvalore 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.0Nel menu Modifica selezionare DWORD, digitare 1 e quindi selezionare OK.
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 .