Cómo utilizar la opción DisallowAdHocAccess para controlar el acceso a los servidores vinculados

Resumen

Este artículo describe cómo deshabilitar las consultas ad hoc que utilizar OPENROWSET o la función OPENDATASOURCE en Microsoft SQL Server.

Deshabilitar las instrucciones Transact-SQL

Puede deshabilitar las instrucciones Transact-SQL que utilizan cadenas de conexión ad hoc con proveedores OLE DB específicos en las funciones OPENROWSET y OPENDATASOURCE realizando una de las siguientes acciones:

  • Cuando se crea un servidor vinculado en un equipo que está ejecutando SQL Server, puede especificar la propiedad DisallowAdHocAccess para el proveedor OLE DB.
  • Si ya existe el servidor vinculado, puede modificar manualmente el registro y, a continuación, agregue el valor de DisallowAdHocAccess .

Especificar la propiedad DisallowAdHocAccess al crear un servidor vinculado

Cuando se crea un servidor vinculado en un equipo que está ejecutando SQL Server, puede especificar la propiedad DisallowAdHocAccess para el proveedor OLE DB. Para ello, siga estos pasos:
  1. Abra el Administrador corporativo de SQL Server y, a continuación, haga clic para seleccionar la carpeta seguridad del servidor en cuestión.
  2. Haga clic en la entrada de Los servidores vinculados y, a continuación, haga clic en Nuevo servidor vinculado.
  3. Haga clic para seleccionar el proveedor de OLE DB que desee utilizar y, a continuación, haga clic en el botón Opciones de proveedor .
  4. Desplácese hacia abajo y seleccione la casilla de verificación no permitir acceso de ad hoc propiedad. Continuar finalizar la creación de la entrada de servidor vinculado.

Modificar el registro y agregar manualmente el valor de DisallowAdHocAccess

Una vez guardado un servidor vinculado, puede establecerse la propiedad DisallowAdHocAccess sólo a través de una configuración del registro.

Nota: Las dos ilustraciones son sólo algunos ejemplos de cómo puede cambiar el proveedor OLE DB para ambos ODBC y el proveedor OLE DB de SQL Server. Si desea utilizar un proveedor OLE DB diferente, debe modificar la entrada de su proveedor.

Importante: esta sección, el método o la tarea contiene pasos que indican cómo modificar el registro. Sin embargo, pueden producirse problemas graves si modifica incorrectamente el registro. Por lo tanto, asegúrese de que sigue estos pasos cuidadosamente. Para una mayor protección, haga una copia de seguridad del registro antes de modificarlo. Entonces, puede restaurar el registro si se produce un problema. Para obtener más información acerca de cómo hacer copia de seguridad y restaurar el registro, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
322756 cómo hacer copia de seguridad y restaurar el registro en Windows

Agregue el valor de DisallowAdHocAccess

Para agregar el valor de DisallowAdHocAccess , siga estos pasos:

  1. Inicie el Editor del registro.
  2. Busque y, a continuación, haga clic en la siguiente clave del registro:
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Providers\<ProviderName>
    Ejemplo

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Providers\MSDASQL

  3. En el menú Edición , haga clic en Agregar valory, a continuación, agregar este valor del registro:
       Value name: DisallowAdHocAccess
    Data type: REG_DWORD
    Radix: Hex
    Value data: 1
  4. Salga del Editor del registro.

Modificar un valor de DisallowAdHocAccess existente

Para modificar un valor de DisallowAdHocAccess existente, siga estos pasos:

  1. Inicie el Editor del registro.
  2. Busque y, a continuación, haga clic en el valor de DisallowAdHocAccess bajo la siguiente clave del registro:
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Providers\<ProviderName>
    Ejemplo

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Providers\Microsoft.ACE.OLEDB.12.0
  3. En el menú Edición , haga clic en DWORD, escriba 1y, a continuación, haga clic en Aceptar.
  4. Salga del Editor del registro.
Para una instancia con nombre, la clave del registro es diferente:
HKEY_LOCAL_MACHINE\Software\Microsoft\Microsoft SQL Server\ < nombre de instancia > \Providers\ < ProviderName >

Nota:
  • Un cambio del valor de DisallowAdHocAscess de 1 a 0 no necesitaría un reinicio del servicio SQL, mientras que tendría un cambio de 0 a 1 para que un servicio de SQL se reinicie para que el cambio que se realizó para ser efectivos.
  • Con la propiedad DisallowAdHocAccess establecida en 1, SQL Server no permite el acceso ad hoc a través de OPENROWSET y OPENDATASOURCE funciones contra el proveedor OLE DB especificado. Si intenta llamar a estas funciones en consultas ad hoc, recibirá un mensaje de error similar al siguiente:
    Servidor: Msg 7415, nivel 16, estado 1, línea 1 acceso Ad hoc al proveedor OLE DB 'Microsoft.Jet.OLEDB.4.0' ha sido denegada. El acceso debe realizarse mediante un servidor vinculado.
    En otras palabras, con la propiedad DisallowAdHocAccess establecida en 1 para un proveedor de OLE DB, debe utilizar una configuración de servidor vinculado predefinido para el proveedor de OLE DB. Ya no se puede pasar una cadena de conexión ad hoc que hace referencia a ese proveedor de OPENROWSET u OPENDATASOURCE .


Referencias

SQL Server libros en pantalla; temas: "Proveedores de configuración OLE DB para consultas distribuidas"; "Referencia de Transact-SQL de OPENROWSET"; "Referencia de Transact-SQL OPENDATASOURCE"

Propiedades

Id. de artículo: 327489 - Última revisión: 17 ene. 2017 - Revisión: 1

Comentarios