解决SQL Server 阻止了对组件 'Ad Hoc Distributed Queries' 的 STATEMENT 'OpenRowset/OpenDatasource' 的访问
根据需要进行asp.net的数据导入导出,结果报以下错:
mark-1:
【报错】SQL Server 阻止了对组件 'Ad Hoc Distributed Queries' 的 STATEMENT 'OpenRowset/OpenDatasource' 的访问,因为此组件已作为此服务器安全配置的一部分而被关闭。系统管理员可以通过使用 sp_configure 启用 'Ad Hoc Distributed Queries'。有关启用 'Ad Hoc Distributed Queries' 的详细信息,请参阅 SQL Server 联机丛书中的 "外围应用配置器"。
【解决方法】开启Ad Hoc Distributed Queries组件,在sql查询编辑器中执行如下语句:
1 --配置权限 2 EXEC sp_configure 'show advanced options', 1; 3 GO 4 RECONFIGURE; 5 GO 6 EXEC sp_configure 'Ad Hoc Distributed Queries', 1; 7 GO 8 RECONFIGURE; 9 GO
执行结果:
关闭Ad Hoc Distributed Queries组件,在sql查询编辑器中执行如下语句:
1 exec sp_configure 'Ad Hoc Distributed Queries',0; 2 go 3 reconfigure; 4 go 5 exec sp_configure 'show advanced options',0; 6 go 7 reconfigure; 8 go
mark-2:
【执行】
1 --将excel数据导入数据库 2 select * into sheet from OPENROWSET('MICROSOFT.JET.OLEDB.4.0','Excel 5.0;HDR=YES;DATABASE=c:\33.xlsx',sheet1$)
【报错】
1 链接服务器"(null)"的 OLE DB 访问接口 "MICROSOFT.JET.OLEDB.4.0" 返回了消息 "未指定的错误"。 2 消息 7303,级别 16,状态 1,第 1 行 3 无法初始化链接服务器 "(null)" 的 OLE DB 访问接口 "MICROSOFT.JET.OLEDB.4.0" 的数据源对象。
【百度的解决办法】
发现根本原因了:management studio--->服务器对象-->链接服务器-->Microsoft.Jet.OLEDB.4.0-->右键属性-->访问接口选项:全都不选or ACE的 那个
将SQL Server(MSSQLSERVER)和SQL Full-Filter Deamon Launcher(MSSQLSERVER)两个服务的登录身份改为LocalSystem (这里可以创建一个账号如:Admin ,然后指定账号用这个)
既然选择了远方,便只顾风雨兼程。