默认情况下,SQL Server 不允许使用 OPENROWSET 和 OPENDATASOURCE 进行即席分布式查询。 当此选项设置为 1 时,SQL Server 允许即席访问。 如果未设置或设置为 0,则 SQL Server 不允许临时访问。
即席分布式查询使用 OPENROWSET 和 OPENDATASOURCE 函数连接到使用 OLE DB 的远程数据源。 OPENROWSET 和 OPENDATASOURCE 应仅用于引用不经常访问的 OLE DB 数据源。 对于将多次访问的任何数据源,请定义链接服务器。
重要
启用临时自定义名称的使用意味着任何已经过身份验证的 SQL Server 登录都可以访问该提供程序。 SQL Server 管理员应为任何本地登录名安全访问的提供程序启用此功能。
注解
尝试与 未启用即席分布式查询 建立临时连接会导致错误:Msg 7415、级别 16、状态 1、第 1 行
已拒绝对 OLE DB 提供程序“Microsoft.ACE.OLEDB.12.0”的临时性访问。 必须通过链接服务器来访问此访问接口。
例子
以下示例启用即席分布式查询,然后查询使用OPENROWSET
函数命名Seattle1
的服务器。
sp_configure 'show advanced options', 1;
RECONFIGURE;
sp_configure 'Ad Hoc Distributed Queries', 1;
RECONFIGURE;
GO
SELECT a.*
FROM OPENROWSET('SQLNCLI', 'Server=Seattle1;Trusted_Connection=yes;',
'SELECT GroupName, Name, DepartmentID
FROM AdventureWorks2012.HumanResources.Department
ORDER BY GroupName, Name') AS a;
GO
另请参阅
服务器配置选项 (SQL Server)
链接服务器(数据库引擎)
OPENROWSET (Transact-SQL)
OPENDATASOURCE (Transact-SQL)
sp_addlinkedserver(Transact-SQL)