解决SQL Server 阻止了对组件 'Ad Hoc Distributed Queries' 的 STATEMENT'OpenRowset/OpenDatasource' 的访问的方法...

1、开启Ad Hoc Distributed Queries组件,在sql查询编辑器中执行如下语句:

exec sp_configure 'show advanced options',1
reconfigure
exec sp_configure 'Ad Hoc Distributed Queries',1
reconfigure

 

2、关闭Ad Hoc Distributed Queries组件,在sql查询编辑器中执行如下语句:

exec sp_configure 'Ad Hoc Distributed Queries',0
reconfigure
exec sp_configure 'show advanced options',0
reconfigure

 

展开阅读全文

OpenDataSource函数,OPENROWSET函数

04-25

[code=SQL]/*rnopenDatasource:不使用连接服务器的名称,而提供特殊的链接信息.rn使用openDatasource的前提是仅当 DisallowAdhocAccess rn注册表选项针对指定的提供程序显式设置为 0,rn并且启用 Ad Hoc Distributed Queries 高级配置选项时,rnOPENDATASOURCE 才可用于访问 OLE DB 数据源中的远程数据。rn如果未设置这些选项,则默认行为不允许即席访问。rn*/rn--代码如下:rnexec sp_configure 'show advanced options',1rnreconfigurernexec sp_configure 'Ad Hoc Distributed Queries',1rnreconfigurern--(1)例如现在我想打开D盘中BJData.mdb中的BJAdmin表的信息rnselect ID,Title,OwnerName from rnopendataSource('Microsoft.Jet.OLEDB.4.0','Data Source="D:\BJData.mdb";')...BJAdminrn/*Results:rnID Title OwnerNamern----------- -------------------- --------------------------------------------------rn1 xinrong rn4 webmaster adminrn5 bing webmasterrn(3 行受影响)rn*/rn--(2)我现在要将BJAdmin中BJNewsCategory中的信息插入到A表中rn--先查询下Test.Newscategoryrnselect * from Test.dbo.Newscategoryrn/*rnID Titlern----------- --------------------rn1 MSSQLrn(1 行受影响)rn*/rninsert into Newscategory select Title from OpenDataSourcern('Microsoft.Jet.OLEDB.4.0','Data Source="D:\BJData.mdb";')...BJNewsCategoryrn--导入之后再查询rnselect * from Test.dbo.Newscategoryrn/*rnID Titlern----------- --------------------rn1 MSSQLrn2 新闻分类rn3 新闻动态rn4 工程案例rn5 膜结构知识rn6 在建工程rn(6 行受影响)rn*/rn--上面的都是在MSSQL中查询Access中的信息,现在将MSSQL中的信息导入到Access中去rn--(3)将AdminInfo的信息插入到BJData.mdb中的BJAdmin中去rnselect * from Test.dbo.AdminInforn/*rnID Titlern----------- ------------------------------rn1 ws_hgorn(1 行受影响)rn*/rninsert into opendatasource('microsoft.Jet.OLEDB.4.0','Data source="D:/BJData.mdb"')...BJAdminrn(Title,RoleID) select Title,1 from AdminInforn--然后查询BJAdmin表的信息rnselect ID,Title,OwnerName from rnopendataSource('Microsoft.Jet.OLEDB.4.0','Data Source="D:\BJData.mdb";')...BJAdmin rn/*rnID Title OwnerNamern----------- -------------------- --------------------------------------------------rn1 xinrong rn4 webmaster adminrn5 bing webmasterrn12 ws_hgo NULLrn(4 行受影响)rn*/rn--(4)上面说的是Access与MSSQl之间的操作现在操作下rn--Excel与MSSQL之间的操作rn--从Excel中读取信息rnselect * from OpenDataSourcern('Microsoft.Jet.OLEDB.4.0','Data Source="D:\work.et";Extended properties=Excel 5.0')...[sheet1$]rn/*rnEmployeeName Sex Age Postrn----------- ----------- -------- ------------ rnws_hgo Boy 23 Senior Programmerrnyangzhognyuan Boy 24 Programmerrnchenjing Girl 24 Designerrn(3 行受影响)rnrn--(5)rn*/rn/*将本地表中的信息导入到远程数据库表中rn下面的例子将本地whsxjAdmin种的(Title,Password)插入到远程rnzhongyiAdmin中去rn*/rninsert into opendatasource('SQLOLEDB','Data Source=IP地址;User ID=zhongyi;password=xinrongkeji').sqlzhongyi.dbo.zhongyiAdmin(Title,Password)rnselect Title,Password from whsxjAdminrn--下面说下OPENROWSETrn/*rn包含访问 OLE DB 数据源中的远程数据所需的全部连接信息。rn当访问链接服务器中的表时,这种方法是一种替代方法,rn并且是一种使用 OLE DB 连接并访问远程数据的一次性的临时方法。rn*/rn--(1)直接查询远程服务器上面的信息rnselect ID,Title from OpenRowsetrn('SQLOLEDB','IP地址';'zhongyi';'xinrongkeji','select * from sqlzhongyi.dbo.zhongyiAdmin') trn--(2)查询Access里面的信息rnselect * from OpenRowsetrn('microsoft.Jet.OLEDB.4.0','d:\BJData.mdb';'Admin';'',BJAdmin) as grnrnrn本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/ws_hgo/archive/2010/04/23/5518918.aspx[/code] 论坛

没有更多推荐了,返回首页