SQL Server 阻止了对组件 \'Ad Hoc Distributed Queries\' 的访问

想用openrowset查询远程数据库,结果提示SQL Server 阻止了对组件 \'Ad Hoc Distributed Queries\' 的访问错误,在网上搜索了一下,找到解决方法:

--Ad Hoc Distributed Queries 是advanced options ,因此必须先将'show advanced options',1,打开高级选项后才能对它进行设置。关闭时,也是先关Ad Hoc Distributed Queries 再关advanced options。

启用Ad Hoc Distributed Queries:

exec sp_configure 'show advanced options',1
reconfigure
exec sp_configure 'Ad Hoc Distributed Queries',1
reconfigure
    使用完成后,关闭Ad Hoc Distributed Queries:
exec sp_configure 'Ad Hoc Distributed Queries',0
reconfigure
exec sp_configure 'show advanced options',0
reconfigure

--以上,在SQL2005运行时遇到。若没有将sp_configure中以上两个参数进行配置,则都会报错。

访问外部链接数据库,获取记录集两种方法

SELECT   *
FROM      OPENDATASOURCE(
         'SQLOLEDB',                                                            --此处是连MYSQL
         'Data Source=ServerName;User ID=sa;Password=sa'
         ).DataBaseName.dbo.Table

select * from openrowset( 'SQLOLEDB ', 'IP地址'; '用户名'; '密码',数据库名.dbo.表名)   --此处是连MYSQL

若是连ACCESS和EXCEL则变成:

select   *   from   openrowset('Microsoft.Jet.OLEDB.4.0','IP地址或数据库路径(例:c:\xxx.mdb)';'用户名(一般默认为admin)';'密码(一般为空)',数据库名.dbo.表名)

select   * from opendatasource('Microsoft.Jet.OLEDB.4.0','Data Source="数据库路径";User ID=admin;password=').DataBaseName.dbo.Table          --连ACCESS

select   * from opendatasource('Microsoft.Jet.OLEDB.4.0','Data Source="数据库路径";User ID=admin;password=;Extended properties=Excel 5.0').DataBaseName.dbo.Table          --连EXCEL

--若没有加Extended Properties则会报错。

--运行完后,需要记得再改回去,以避免安全性问题。

posted @   today4king  阅读(3031)  评论(0编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
点击右上角即可分享
微信分享提示
主题色彩