日期:2014-05-17  浏览次数:20567 次

执行远程访问数据库语句,在存储过程中怎么写?
---启用Ad Hoc Distributed Queries
 exec sp_configure 'show advanced options',1
      reconfigure
      exec sp_configure 'Ad Hoc Distributed Queries',1
       reconfigure
---执行远程访问数据库语句
select * from OPENDATASOURCE('SQLOLEDB','data source=.;user id=sa;password=7788250').Fuyoo_SpotTransactionsWebCq.dbo.Auction   

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

 


为什么上面的不能一起执行,一起执行还是会出现 " 消息 15281,级别 16,状态 1,第 7 行
SQL Server 阻止了对组件 'Ad Hoc Distributed Queries' 的 STATEMENT'OpenRowset/OpenDatasource' 的访问,因为此组件已......" 按顺序分三步执行才行..。 如果放到事务里是不是就可以了呢,应该怎么写?
事务 sql?server OPENDATASOURCE

------解决方案--------------------
因为远程还没有执行完,设置就被改了,远程执行就被中断
------解决方案--------------------
关闭的操作最好不要放在一起,说不定你有同时两个事务在使用这个脚本,一个完成了,另外一个正在执行,所以改不了,这种大动作修改,最好放在连接的时候处理
------解决方案--------------------
引用:
因为远程还没有执行完,设置就被改了,远程执行就被中断


我一开始也执行报错,加了一个go,改成这样后,我试了试,就不报错了:


--第一次的语句
 exec sp_configure 'show advanced options',1
      reconfigure
      exec sp_configure 'Ad Hoc Distributed Queries',1
       reconfigure
go    --加了一个go


       
---第二次的语句,执行远程访问数据库语句
select * 
from OPENDATASOURCE('SQLOLEDB','data source=192.168.1.108;user id=sa;password=yupeigu').ggg.dbo.tb  



---第三次语句,使用完成后,关闭Ad Hoc Distributed Queries
    exec sp_configure 'Ad Hoc Distributed Queries',0
      reconfigure
      exec sp_configure 'show advanced options',0
      reconfigure