NESTA TAREFA
Sumário
Este artigo descreve como desativar consultas ad hoc que usam a OPENROWSET ou a funcionalidade OPENDATASOURCE no Microsoft SQL Server.
Desabilitar instruções Transact-SQL
Você pode desativar as instruções Transact-SQL que usam sequências de caracteres de conexão ad-hoc com provedores OLE DB específicos nas funções OPENROWSET e OPENDATASOURCE usando uma das seguintes ações:
-
Quando você cria um servidor vinculado em um computador que esteja executando o SQL Server, você pode especificar a propriedade DisallowAdHocAccess para o provedor OLE DB.
-
Se já existir um servidor vinculado, você pode modificar manualmente o registro e, em seguida, adicione o valor de DisallowAdHocAccess .
Especificar a propriedade DisallowAdHocAccess quando você cria um servidor vinculado
Quando você cria um servidor vinculado em um computador que esteja executando o SQL Server, você pode especificar a propriedade DisallowAdHocAccess para o provedor OLE DB. Para fazer isso, execute as seguintes etapas:
-
Abra o SQL Server Enterprise Manager e, em seguida, clique para selecionar a pasta de segurança do servidor em questão.
-
Clique na entrada de Servidores vinculados e, em seguida, clique em Novo servidor vinculado.
-
Clique para selecionar o provedor do OLE DB que você deseja usar e, em seguida, clique no botão Opções do provedor .
-
Role para baixo e marque a caixa de seleção não permitir adhoc acesso propriedade. Continue concluir a criação da sua entrada de servidor vinculado.
Modificar o registro manualmente e adicione o valor de DisallowAdHocAccess
Depois que um servidor vinculado é salvo, a propriedade DisallowAdHocAccess pode ser definida por meio de uma configuração do registro.
Observação: As duas ilustrações são apenas exemplos de como você pode alterar o provedor OLE DB para ambos os ODBC e o provedor SQL Server OLE DB. Se você quiser usar um provedor OLE DB diferente, você deve modificar a entrada do provedor.
Importante: essa seção, método ou tarefa contém etapas que informam sobre como modificar o registro. No entanto, sérios problemas poderão ocorrer caso você modifique o registro incorretamente. Portanto, certifique-se de seguir estes passos cuidadosamente. Para obter mais proteção, faça backup do registro antes de modificá-lo. Em seguida, você poderá restaurar o registro caso ocorra um problema. Para obter mais informações sobre como fazer backup e restaurar o registro, clique no número do artigo a seguir para visualizá-lo na Base de Dados de Conhecimento da Microsoft:
322756 como fazer backup e restaurar o registro no Windows
Adicione o valor de DisallowAdHocAccess
Para adicionar o valor de DisallowAdHocAccess , execute essas etapas:
-
Inicie o Editor do Registro.
-
Localize e clique na seguinte chave no registro:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Providers\<ProviderName>
Exemplo:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Providers\MSDASQL -
No menu Editar , clique em Adicionar valore adicione este valor do registro:
Value name: DisallowAdHocAccess
Data type: REG_DWORD
Radix: Hex
Value data: 1 -
Feche o Editor do registro.
Modificar um valor DisallowAdHocAccess existente
Para modificar um valor DisallowAdHocAccess existente, siga estas etapas:
-
Inicie o Editor do Registro.
-
Localize e, em seguida, clique no valor de DisallowAdHocAccess sob a seguinte chave no registro:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Providers\<ProviderName>
Exemplo:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Providers\Microsoft.ACE.OLEDB.12.0 -
No menu Editar , clique em DWORD, digite 1e clique em OK.
-
Feche o Editor do registro.
Para uma instância nomeada, a chave do registro é diferente:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL servidor \ < nome da instância > \Providers\ < ProviderName >
Observação:
-
Uma alteração do valor do DisallowAdHocAscess de 1 para 0 não requer a reinicialização do serviço SQL, enquanto uma alteração de 0 para 1 precisa ter um serviço SQL reiniciar para que a alteração foi feita para entrar em vigor.
-
Com a propriedade DisallowAdHocAccess definida como 1, o SQL Server não permite acesso ad-hoc através de OPENROWSET e as funções OPENDATASOURCE contra o provedor OLE DB especificado. Se você tentar chamar essas funções em consultas ad hoc, você recebe uma mensagem de erro semelhante à seguinte:
Servidor: Msg 7415, Level 16, State 1, linha 1 acesso Ad hoc ao provedor do OLE DB 'Microsoft.Jet.OLEDB.4.0' foi negado. Você deve acessar esse provedor através de um servidor vinculado.
Em outras palavras, com a propriedade DisallowAdHocAccess definida como 1 para um provedor OLE DB específico, você deve usar uma configuração predefinida de servidor vinculado para o provedor do OLE DB específico. Você não pode passar uma cadeia de caracteres de conexão ad hoc que faz referência a esse provedor a OPENROWSET ou a função OPENDATASOURCE .
Referências
SQL Server Books Online; tópicos: "Configurando OLE DB provedores para consultas distribuídos;" "Referência do Transact-SQL OPENROWSET"; "Referência do Transact-SQL OPENDATASOURCE"