Configurando permissões para acessar dados remotos de uma fonte de dados OLEDB no SQL Server

Este artigo descreve como desabilitar consultas ad hoc que usam a OPENROWSET funcionalidade ou no OPENDATASOURCE SQL Server.

Versão original do produto: SQL Server
Número original do KB: 327489

Resumo

Você pode usar OPENROWSET instruções or OPENDATASOURCE no SQL Server como um método ad hoc para conectar e acessar dados de um provedor OLEDB remoto, incluindo uma instância remota do SQL Server. Essas instruções podem ser usadas para acessar dados remotos de fontes de dados OLE DB somente quando a opção do Registro DisallowAdhocAccess estiver explicitamente definida como 0 para o provedor especificado e a opção de configuração avançada Ad Hoc Distributed Queries estiver habilitada. Quando essas opções não estão definidas, o comportamento padrão não permite acesso ad hoc.

Este artigo fornece detalhes adicionais sobre como configurar DisallowAdhocAccess por meio do SQL Server Management Studio e das configurações do Registro, bem como o comportamento padrão.

Desabilitando o acesso ad hoc usando o SQL Server Management Studio

Especificar a DisallowAdHocAccess propriedade do provedor no SQL Server Management Studio (SSMS)

  1. Abra o SSMS e expanda Provedores em Servidores Vinculados.

  2. Clique para selecionar o provedor OLE DB que você deseja usar e, em seguida, selecione o botão Opções do Provedor.

  3. Role para baixo e marque a caixa de seleção Proibir propriedade de acesso ad hoc e selecione OK.

Desabilitando o acesso ad hoc usando o editor de registro

Importante

Esta seção, método ou tarefa contém etapas que descrevem como modificar o Registro. Entretanto, sérios problemas poderão ocorrer caso você modifique o Registro incorretamente. Portanto, certifique-se de seguir essas etapas com atenção. Para proteção acrescida, faça backup do Registro antes de modificá-lo. Em, é possível restaurar o Registro caso ocorra um problema. Para obter mais informações sobre como fazer backup e restaurar o Registro, consulte Como fazer backup e restaurar o Registro no Windows.

Depois que um servidor vinculado é salvo, a DisallowAdHocAccess propriedade só pode ser definida por meio de uma configuração do Registro.

Adicionar o valor DisallowAdHocAccess

Para adicionar o DisallowAdHocAccess valor, siga estas etapas:

  1. Abra o Editor do Registro.

  2. Localize e selecione a chave no registro: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Providers<ProviderName>

    Exemplo: se você estiver tentando alterar isso para o Microsoft OLEDB Provider for ODBC Drivers, a chave será:

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Providers\MSDASQL

  3. No menu Editar, selecione Adicionar Valor e adicione este valor do Registro:

    Value name: DisallowAdHocAccess
    Data type: REG_DWORD
    Radix: Hex
    Value data: 1
    
  4. Feche o Editor do Registro.

Habilitar acesso remoto ad-hoc

Depois de garantir que a opção de configuração avançada Ad Hoc Distributed Queries esteja habilitada, você precisa definir a opção de registro DisallowAdhocAccess como 0 para o provedor especificado.

Para modificar um valor existente DisallowAdHocAccess , siga estas etapas:

  1. Abra o Editor do Registro.

  2. Localize e selecione o DisallowAdHocAccess valor na chave no registro: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Providers<ProviderName>

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

  3. No menu Editar, selecione DWORD, digite 1 e selecione OK.

  4. Feche o Editor do Registro. Para uma instância nomeada, a chave do Registro é diferente: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\<Instance Name>\Providers\<ProviderName>

Requisitos de reinicialização

Uma alteração do valor de DisallowAdHocAccess 1 para 0 não exigiria uma reinicialização do Serviço SQL, enquanto uma alteração de 0 para 1 teria que ter uma reinicialização do Serviço SQL para que a alteração feita entrasse em vigor.

Comportamento padrão

O acesso ad hoc de fontes de dados OLE BD remotas usando OPENROWSET e OPENDATASOURCE é desabilitado por padrão e nenhuma configuração adicional é necessária. Você precisará usar os procedimentos discutidos no artigo somente se esse acesso remoto tiver sido habilitado explicitamente anteriormente.

Observação

Com a configuração padrão, se você tentar chamar essas funções em consultas ad hoc, receberá uma mensagem de erro semelhante à seguinte mensagem: Servidor: Msg 7415, Nível 16, Estado 1, Linha 1 O acesso ad hoc ao provedor OLE DB 'Microsoft.Jet.OLEDB.4.0' foi negado. É necessário acessar esse provedor através de um servidor vinculado.

Em outras palavras, com a DisallowAdHocAccess propriedade definida como 1 para um provedor OLE DB específico, você deve usar uma configuração de servidor vinculado predefinida para o provedor OLE DB específico. Você não pode mais passar uma cadeia de conexão ad hoc que faz referência a esse provedor para a OPENROWSET função ou .OPENDATASOURCE

Confira também