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