日期:2014-05-18  浏览次数:20425 次

也是特急!!!客户开始骂人了,数据库SQL OLEDB访问不顺畅,高手请指点
源代码:。。。。  
Public   mconn2   As   Connection
Set   mconn2   =   New   ADODB.Connection
mconn2.ConnectionTimeout   =   0
mconn2.Open   "Provider=SQLOLEDB;Persist   Security   Info=False;User   ID=SA;Initial   Catalog= "   &   目标数据库   &   ";Data   Source= "   &   服务器

'mconn2.Execute   "SET   xact_abort     on   "
'mconn2.CommandTimeout   =   0
mconn2.Execute   "insert   into   数据表     select   *   from   OPENDATASOURCE( 'SQLOLEDB ', 'Data   Source= "   &   服务器   &   ";User   ID=sa; '). "   &   源数据库   &   ".dbo.数据表   as   b   where   b.关键字段   not   in   (select   关键字段   from   数据表   )   "
MsgBox   "恭喜您,客户信息增量复制完毕! ",   vbInformation
源代码:。。。。  

当执行到mconn2.Execute   。。。时出错:“运行时错误-2147217871,OLE/DB。。。一般性网络错误,请检查网络文档”


情况说明:
    1、上面程序完成相同服务器跨数据库相同表增量数据复制的功能,把“源数据库”-“数据表”中存在的,但在“目标数据库”-“数据表”中不存在的记录拷贝过来,两数据表结构完全相同,根据“关键字段”来判断记录是否需要拷贝。
    2、上述程序逻辑肯定没有问题,因为我已经在两台电脑上成功运行了,但还没有发现第三台电脑可以运行,第三台电脑的主人很急,因为他很需要,请各位大狭行行好,救救我,万分感激!!!
    3、已经尝试过mconn2.ConnectionTimeout   =   0,MDAC2。0;MDAC2。7;MDAC2。81驱动


------解决方案--------------------
语句没问题,提示是 "一般性网络错误 "

mconn2.Open "Provider=SQLOLEDB;Persist Security Info=False;User ID=SA;Initial Catalog= " & 目标数据库 & ";Data Source= " & 服务器

mconn2.Execute "insert into 数据表 select * from OPENDATASOURCE( 'SQLOLEDB ', 'Data Source= " & 服务器 & ";User ID=sa; '). " & 源数据库 & ".dbo.数据表 as b where b.关键字段 not in (select 关键字段 from 数据表 ) "

不知道你两处的 "服务器 " 是不是相同的,如果相同,应该可以不必用OPENDATASOURCE
mconn2.Execute "insert into 数据表 select * from " & 源数据库 & ".dbo.数据表 as b where b.关键字段 not in (select 关键字段 from 数据表 ) "