Compartir vía


Configuración del servidor: Consultas distribuidas ad hoc

Se aplica a: SQL Server

De forma predeterminada, SQL Server no permite consultas ad hoc distribuidas que usen OPENROWSET y OPENDATASOURCE. Cuando esta opción está establecida en 1, SQL Server permite el acceso ad hoc. Si esta opción no esta establecida o está establecida en 0, SQL Server no permite el acceso ad hoc.

Las consultas distribuidas ad hoc utilizan las funciones OPENROWSET y OPENDATASOURCE para conectarse a los orígenes de datos remotos que utilizan OLE DB. Las funciones OPENROWSET y OPENDATASOURCE solo se deben utilizar para hacer referencia a orígenes de datos OLE DB a los que rara vez se obtiene acceso. Para los orígenes de datos cuyo acceso es más frecuente, defina un servidor vinculado.

Habilitar el uso de nombres ad hoc significa que cualquier inicio de sesión autenticado en SQL Server puede obtener acceso al proveedor. Los administradores de SQL Server deben habilitar esta característica para los proveedores a los que cualquier cuenta local pueda tener acceso de forma segura.

Comentarios

Si intenta realizar una conexión ad hoc con Ad Hoc Distributed Queries deshabilitadas, verá el siguiente error:

Msg 7415, Level 16, State 1, Line 1

Ad hoc access to OLE DB provider 'Microsoft.ACE.OLEDB.12.0' has been denied. You must access this provider through a linked server.

Azure SQL Database y Azure SQL Managed Instance

Vea Comparación de características: Azure SQL Database y Azure SQL Managed Instance para obtener información.

Ejemplos

El ejemplo siguiente habilita Ad Hoc Distributed Queries y, a continuación, consulta un servidor denominado Seattle1 mediante la función OPENROWSET.

USE master;
GO

EXECUTE sp_configure 'show advanced options', 1;
GO

RECONFIGURE;
GO

EXECUTE sp_configure 'Ad Hoc Distributed Queries', 1;
GO

RECONFIGURE;
GO

SELECT a.*
FROM OPENROWSET ('MSOLEDBSQL', 'Server=Seattle1;Trusted_Connection=yes;', 'SELECT GroupName, Name, DepartmentID
      FROM AdventureWorks2022.HumanResources.Department
      ORDER BY GroupName, Name') AS a;
GO

EXECUTE sp_configure 'show advanced options', 0;
GO

RECONFIGURE;
GO