关于OPENROWSET或OPENDATASOURCE函数的使用问题(50分)

  • 主题发起人 主题发起人 app2001
  • 开始时间 开始时间
A

app2001

Unregistered / Unconfirmed
GUEST, unregistred user!
我想用SQLSERVER中的OPENROWSET或OPENDATASOURCE函数打开VFP的dbf格式数据,以便能在ADOQUERY中,能用批量插入的方法将SQLSERVER中的数据导入DBF格式的表中,试了半天,语句如下
SELECT * FROM OPENDATASOURCE('MSDASQL','Driver={Microsoft Visual FoxPro Driver};
UID=;PWD=;SourceDB=app;SourceType=DBF;Exclusive=No;BackgroundFetch=Yes;
Collate=Machine;Null=Yes;Deleted=Yes')...dbf_table
其中app是odbc别名,系统总是提示"已拒绝对 OLE DB 提供程序 'MSDASQL' 的特殊访问。必须通过链接服务器来访问此提供程序。"
若是用OPENROWSET函数,语句如下:
select a.* from OPENROWSET('MSDASQL.1','Driver={Microsoft Visual FoxPro Driver};UID=;PWD=;SourceDB=D:/app;SourceType=DBF;Exclusive=No;BackgroundFetch=Yes;Collate=Machine;
Null=Yes;Deleted=Yes',dbf_table.dbf) as a;
其中D:/app为存放DBF格式dbf_table表的目录,dbf_table为自由表;
系统就提示:"对 OLE DB 提供程序 'MSDASQL.1' 的架构和/或目录的使用无效。提供了由四部分构成的名称,但提供程序并未表现必要的接口来使用目录和/或架构。"
有哪位大侠对此明白的,请指教,谢了
另:在另一个问题中提出了类似的问题,一直没有人给我满意的答复,所以另开了个问题
来提问,若有人能答出,我会将上个问题的100分一起送予他的。
 
把你的dbf发给我careway@sohu.com,这1000分我想要!呵呵,认识我吗?
 
再加100好不好,怎么没人帮我答呢?
 
OPENDATASOURCE( provider_name, init_string )
只有两个参数!
例如:
SELECT * FROM
OpenDataSource('Microsoft.Jet.OLEDB.4.0','Data Source="d:/test.mdb";Persist Security Info=False;User ID=Admin;Password="";')
...your_table
 
你说的是打开ACESS的,这个我会了,可是打开DBF的不一样,就是全面那个字串不会,你帮忙到底,就拿
DBF来举例了
 
select * from openrowset('msdasql','dsn=app;uid=userid;pwd=upassword','select * from dbf_table') as a
這樣我想可以打開,沒試過,我沒dbf表[:D]
要不發把表給我吧,我試試
stuwe@163.com
 
不行
提示如下:
服务器: 消息 7399,级别 16,状态 1,行 1
OLE DB 提供程序 'msdasql' 报错。
[OLE/DB provider returned message: [Microsoft][ODBC 驱动程序管理器] 未发现数据源名称并且未指定默认驱动程序]
to:
数据库我已发出,你查收一下
 
对 dbf 做个链接服务器。
 
select * from OpenDataSource('Microsoft.Jet.OLEDB.4.0','Data Source="//w2ksrv2/task/dpthr";User ID=Admin;Password=;Extended properties=dBase 5.0' )..."20030613"

"20030613":DBF表名

我現在在用的語句,不會有問題,給分給分
 
to:kycheung
我试过了,我的dbf数据库是foxbase3.0格式的,用你的方法不行,能不能再帮我试试,我不会食言的
 
沒可能的,我用這個語句都可以打開得了的,DBF是foxpro 2.5/2.6格式的
"20030613":DBF表名 如果是字母開頭的不要用雙引號

select * from OpenDataSource('Microsoft.Jet.OLEDB.4.0','Data Source="//w2ksrv2/task/dpthr";User ID=Admin;Password=;Extended properties=dBase 5.0' )...tablename
 
那也许是我的操作与你的有不一致的地方?你帮我看一下
我把数据库cardsell_table.dbf拷到e:/目录下,我的机子名Lmser1
在查询分析器里写的语句如下:
select * from OpenDataSource('Microsoft.Jet.OLEDB.4.0','Data Source="//Lmser1/e";User ID=Admin;Password=;Extended properties=dBase 5.0' )...cardsell_table
执行后出现如下错误提示:
务器: 消息 7399,级别 16,状态 1,行 1
OLE DB 提供程序 'Microsoft.Jet.OLEDB.4.0' 报错。
[OLE/DB provider returned message: 外部数据库驱动程序 (8961) 中的意外错误。]
 
需要更改为Visual Foxpro的驱动
具体名字不知道
 
对呀,我现在缺的就是这个啊
 
你好我是楚辞。我按照你的东西去做了,在编译时提示TINFILE。DCU文件找不到即这个TIniFile文件如何建立?!我没有使用过INI文件,所以不知如何办?请详细给说说如何先在这谢谢了!我的QQ号是195425812。这个上面告诉我也行!
 
多人接受答案了。
 
后退
顶部