none
十万火急,请教各位大师,“访问接口无法用于分布式查询” RRS feed

  • 问题

  • declare ImpCursor cursor for 
    select WDS.MeterNo  as  MeterNo, f_meterday_date, f_meterday_used  as  Qty

     from openrowset('msdaora','.';'scott';'123456','select  f_meter_code, f_meterday_date, f_meterday_used  from  t_rp_meter_dayenergytemp')   as  DS  

     left  join  WaterDatasSetting    WDS
     on  DS.f_meter_code=WDS.JDMeterNo 
     where   f_meter_code is not null
     and f_meterday_date is not null
     and f_meterday_used>=0
      order by f_meterday_date

    提示错误信息:
      消息 7308,级别 16,状态 1,过程 Usp_WaterImp,第 22 行
    因为 OLE DB 访问接口 'msdaora' 配置为在单线程单元模式下运行,所以该访问接口无法用于分布式查询。


    问题一:“因为 OLE DB 访问接口 'msdaora' 配置为在单线程单元模式下运行”什么意思???   什么叫做“单线程单元模式下运行”???

    问题二:“该访问接口无法用于分布式查询”,什么叫做“分布式查询”???     跨越数据库查询就叫做“分布式查询”吧。

    问题三:大师,应该怎样解决这样的问题呢???

    问题四:“update openrowset()  set  set lable=1”这样可以修改对应的“Oracle”数据库中表的数据吧?     openrowset()就像“表”一样。

    Science and technology is my lover.


    2012年12月12日 5:12

答案

  • 问题一:“因为 OLE DB 访问接口 'msdaora' 配置为在单线程单元模式下运行”什么意思???   什么叫做“单线程单元模式下运行”???

    单线程单元模式就是STA(Single-threaded apartment)模式。在STA线程模式中,对线程的所有调用都放到一个队列中,然后逐个处理这些调用。因此,STA线程永远不会同时执行多个方法。

    问题二:“该访问接口无法用于分布式查询”,什么叫做“分布式查询”???     跨越数据库查询就叫做“分布式查询”吧。

    分布式查询从多异类数据源中访问数据。这些数据源可以存储在同一台计算机或不同的计算机上。Microsoft SQL Server 通过使用 OLE DB 来支持分布式查询。

    详见:http://technet.microsoft.com/zh-cn/library/ms188721.aspx

    问题三:应该怎样解决这样的问题呢???

    参考:
    http://www.cnblogs.com/tippoint/archive/2012/05/09/2491496.html

    问题四:“update openrowset()  set  set lable=1”这样可以修改对应的“Oracle”数据库中表的数据吧? openrowset()就像“表”一样。

    可以这样用,官方说明中提到:
    UPDATE 语句可以更改表或视图中单行、行组或所有行的数据值。还可以用该语句更新远程服务器上的行(使用链接服务器名称或 OPENROWSET、OPENDATASOURCE 和 OPENQUERY 函数),前提是用来访问远程服务器的 OLE DB 访问接口支持更新操作。
    详见:http://technet.microsoft.com/zh-cn/library/ms188724(v=sql.105)

    2012年12月16日 9:22
    版主

全部回复

  • For your second question, have to start msdtc service and enable network access in it on all involved servers.

    By the way, you may need some basic sql training based on your posts here. It'll really help you to step into sql world.

    2012年12月12日 14:39
  • Master,I am appreciated for your help.

          SQLServer和Oracle双方都要启动“MSDTC”服务吗???    “MSDTC服务”提供分布式事务服务,如果要在数据库中使用分布式事务,必须在参与的双方服务器启动MSDTC是吗???


    Science and technology is my lover.

    2012年12月13日 1:17
  • Master,  WinServer2008  的默认配置就是开启“MSDTC”的吧。

    Science and technology is my lover.

    2012年12月13日 1:25
  • First of all, I'm not master. Yes, msdtc is running by default but you have to enable network access in it. It's windows service by the way, not specific for sql or Oracle.
    2012年12月13日 3:13
  • To resolve this error, configure the provider to run in multithreaded apartment (MTA) mode. If the provider does not support MTA, and the provider cannot be upgraded to a version that supports MTA, consider configuring the provider to run out-of-process. The provider vendor should be able to tell you if the provider supports MTA or running out-of-process.

    From: http://msdn.microsoft.com/en-us/library/cc645919.aspx

    2012年12月14日 7:22
  • 问题一:“因为 OLE DB 访问接口 'msdaora' 配置为在单线程单元模式下运行”什么意思???   什么叫做“单线程单元模式下运行”???

    单线程单元模式就是STA(Single-threaded apartment)模式。在STA线程模式中,对线程的所有调用都放到一个队列中,然后逐个处理这些调用。因此,STA线程永远不会同时执行多个方法。

    问题二:“该访问接口无法用于分布式查询”,什么叫做“分布式查询”???     跨越数据库查询就叫做“分布式查询”吧。

    分布式查询从多异类数据源中访问数据。这些数据源可以存储在同一台计算机或不同的计算机上。Microsoft SQL Server 通过使用 OLE DB 来支持分布式查询。

    详见:http://technet.microsoft.com/zh-cn/library/ms188721.aspx

    问题三:应该怎样解决这样的问题呢???

    参考:
    http://www.cnblogs.com/tippoint/archive/2012/05/09/2491496.html

    问题四:“update openrowset()  set  set lable=1”这样可以修改对应的“Oracle”数据库中表的数据吧? openrowset()就像“表”一样。

    可以这样用,官方说明中提到:
    UPDATE 语句可以更改表或视图中单行、行组或所有行的数据值。还可以用该语句更新远程服务器上的行(使用链接服务器名称或 OPENROWSET、OPENDATASOURCE 和 OPENQUERY 函数),前提是用来访问远程服务器的 OLE DB 访问接口支持更新操作。
    详见:http://technet.microsoft.com/zh-cn/library/ms188724(v=sql.105)

    2012年12月16日 9:22
    版主
  • 请教一下maco wang大侠 在MTA线程模式中,对线程的所有调用是怎样的呢?看了MSDN感觉还是不是很懂

    给我写信: QQ我:点击这里给我发消息

    2012年12月17日 5:19
  • 参考:OLE线程模型的说明和工作方式

    关于线程的调度情况怎么查看,我也不知道。

    2012年12月17日 12:35
    版主
  • 谢谢maco wang大侠提供的文章

    给我写信: QQ我:点击这里给我发消息

    2012年12月17日 13:50