Come utilizzare l'impostazione DisallowAdHocAccess per controllare l'accesso ai server collegati

Riepilogo

In questo articolo viene descritto come disattivare le query ad hoc che utilizzano la funzionalità OPENDATASOURCE o OPENROWSET in Microsoft SQL Server.

Disattivare le istruzioni Transact-SQL

È possibile disattivare le istruzioni Transact-SQL che utilizzano stringhe di connessione ad hoc con particolari provider OLE DB nelle funzioni OPENROWSET e OPENDATASOURCE mediante una delle seguenti operazioni:

  • Quando si crea un server collegato su un computer che esegue SQL Server, è possibile specificare la proprietà DisallowAdHocAccess per il provider OLE DB.
  • Se il server collegato specificato esiste già, è possibile modificare manualmente il Registro di sistema e quindi aggiungere il valore DisallowAdHocAccess .

Quando si crea un server collegato, specificare la proprietà DisallowAdHocAccess

Quando si crea un server collegato su un computer che esegue SQL Server, è possibile specificare la proprietà DisallowAdHocAccess per il provider OLE DB. A tale scopo, attenersi alla seguente procedura:
  1. Aprire SQL Server Enterprise Manager e quindi fare clic per selezionare la cartella protezione del server in questione.
  2. Destro la voce di Server collegati e quindi fare clic su Nuovo Server collegato.
  3. Fare clic per selezionare il provider OLE DB che si desidera utilizzare e quindi fare clic sul pulsante Opzioni del Provider .
  4. Scorrere verso il basso e selezionare la casella di controllo di accesso ad hoc disattiva la proprietà. Continuare a completare la creazione della voce di server collegato.

Modificare il registro manualmente e aggiungere il valore DisallowAdHocAccess

Dopo aver salvato un server collegato, è possibile impostare la proprietà DisallowAdHocAccess solo tramite un'impostazione del Registro di sistema.

Nota: Le due illustrazioni sono solo esempi di come è possibile modificare il provider OLE DB per entrambi ODBC e per il provider OLE DB di SQL Server. Se si desidera utilizzare un diverso provider OLE DB, è necessario modificare la voce del provider.

Importante Questa sezione, metodo o attività contiene passaggi su come modificare il Registro di sistema. Tuttavia, una modifica errata del registro di sistema potrebbe causare gravi problemi. Pertanto, assicurarsi di seguire attentamente i passaggi. Per maggiore protezione, eseguire il backup del Registro di sistema prima di modificarlo. Cosicché sia possibile ripristinare il Registro di sistema se si verifica un problema. Per ulteriori informazioni su come eseguire il backup e ripristinare il Registro di sistema, fare clic sul numero dell'articolo riportato di seguito per visualizzare l'articolo della Microsoft Knowledge Base:
322756 come eseguire il backup e ripristinare il Registro di sistema Windows

Aggiungere il valore DisallowAdHocAccess

Per aggiungere il valore DisallowAdHocAccess , attenersi alla seguente procedura:

  1. Avviare l'Editor del Registro di sistema.
  2. Individuare e selezionare la seguente chiave del Registro di sistema:
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Providers\<ProviderName>
    Esempio

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Providers\MSDASQL

  3. Dal menu Modifica , fare clic su Aggiungi valoree 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.

Modificare un valore DisallowAdHocAccess esistente

Per modificare un valore DisallowAdHocAccess esistente, attenersi alla seguente procedura:

  1. Avviare l'Editor del Registro di sistema.
  2. Individuare e fare clic sul valore DisallowAdHocAccess nella seguente chiave del Registro di sistema:
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Providers\<ProviderName>
    Esempio

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Providers\Microsoft.ACE.OLEDB.12.0
  3. Dal menu Modifica , fare clic su valore DWORD, digitare 1e quindi fare clic su 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 < nome istanza > \Providers\ < ProviderName >

Nota
  • Una modifica del valore di DisallowAdHocAscess da 1 a 0 non richiederebbe il riavvio del servizio SQL, mentre una modifica da 0 a 1 avrebbe un servizio SQL riavviare la modifica apportata per renderle effettive.
  • Con la proprietà DisallowAdHocAccess è impostata su 1, SQL Server non consente l'accesso ad hoc tramite la funzione OPENROWSET e le funzioni OPENDATASOURCE contro il provider OLE DB specificato. Se si tenta di chiamare tali funzioni nelle query ad hoc, viene visualizzato un messaggio di errore analogo al seguente:
    Server: Msg 7415, livello 16, stato 1, riga 1 accesso ad hoc al provider OLE DB 'Microsoft.Jet.OLEDB.4.0' è stato negato. È necessario accedere al provider tramite un server collegato.
    In altre parole, con la proprietà DisallowAdHocAccess impostata su 1 per un determinato provider OLE DB, è necessario utilizzare un programma di installazione di server collegato predefinito per il provider OLE DB specifico. Non è possibile passare una stringa di connessione ad hoc che fa riferimento a tale provider per funzione OPENDATASOURCE o OPENROWSET .


Riferimenti

Documentazione di SQL Server in linea; argomenti: "Configurazione OLE DB Provider per le query distribuita"; "OPENROWSET Transact-SQL Reference"; "OPENDATASOURCE Transact-SQL Reference"

Proprietà

ID articolo: 327489 - Ultima revisione: 30 gen 2017 - Revisione: 1

Feedback