如何用VFP的dbf进行SQLServer7.0的分布式查询

出处:Examlink 作者:无风浪 日期:2007年08月09日 16时05分

概述 

本文演示如何执行一个 SQL Server 分布式查询来从 FoxPro .dbc 和 .dbf 文件获取数据. 

更多信息 

Microsoft SQL Server 7.0 提供了执行基于 OLE DB providers 的查询的能力. 这是靠使用 OpenQuery 或 OpenRowset Transact-SQL 函数或使用包含一个已连接服务器名四部查询来执行的. 

例如:

sp_addlinkedserver ’mylinkedserver’, ’product_name’, ’myoledbprovider’, ’data_source’,’location’, ’provider_string’, ’catalog’

SELECT * FROM OPENQUERY(mylinkedserver, ’select * from table1’)

可以用 Microsoft OLE DB provider for ODBC (MSDASQL) 和 Visual FoxPro ODBC driver 来设置一个已连接服务器 (linked server) 来执行基于 FoxPro .dbc 和 .dbf 文件的分布式查询. 不支持用 Jet OLEDB Provider 和 FoxPro. 

以下 T-SQL 示例代码演示如何用 OpenQuery 和 OpenRowset 函数设置和使用分布式查询 FoxPro. 它也演示了如何从 SQL Server 更新一个远程 FoxPro 表. 你可以在一个 SQL Server 7.0 机器上安装了 Visual FoxPro ODBC driver 后, 在 SQL Query Analyzer 中测试这些代码 . 你需要改变数据源名和路径到适当的 FoxPro 文件: 


/* OPENROWSET 和 OPENQUERY 示例. 以 VFP 通过 ODBC OLE DB provider */ 

/* 这些 OPENROWSET 示例依赖于示例文件 VFP98\data\Testdata.dbc
如果你的数据在不同的位置请修改你的代码 */ 

--====================================================
-- 使用 DBC 文件 , 读和更新
--====================================================
-- OPENROWSET DSN-less 示例

select * from openrowset(’MSDASQL’,
’Driver=Microsoft Visual FoxPro Driver;
SourceDB=e:\VFP98\data\Testdata.dbc;
SourceType=DBC’,
’select * from customer where country != "USA" order by country’)
go

select * from openrowset(’MSDASQL’,
’Driver=Microsoft Visual FoxPro Driver;
SourceDB=e:\VFP98\data\Testdata.dbc;
SourceType=DBC’,
’select * from customer where region="WA"’)
go

Update openrowset(’MSDASQL’,
’Driver=Microsoft Visual FoxPro Driver;
SourceDB=e:\VFP98\data\Testdata.dbc;
SourceType=DBC’,
’select * from customer where region="WA"’)
set region = "Seattle" 
go

-- check to verify which rows were updated
select * from openrowset(’MSDASQL’,
’Driver=Microsoft Visual FoxPro Driver;
SourceDB=e:\VFP98\data\Testdata.dbc;
SourceType=DBC’,
’select * from customer where region="Seattle"’) 
go

-- OPENROWSET DSN 示例
/* 注意:如果 SQL Server 是配置为使用本地帐号 DSN 示例可能失败.*/ 
select * from openrowset(’MSDASQL’,
’DSN=Visual FoxPro Database;
SourceDB=e:\VFP98\data\Testdata.dbc;
SourceType=DBC’,
’select * from customer where country != "USA" order by country’)
go

/* sp_addlinkedserver 示例 */ 
-- sp_addlinkedserver example with DSN

/* 你需要生成一个 DSN 并使它指向 Testdata 数据库. 
修改你的代码以反映 DBC 位置 */ 

/* 注意:如果 SQL Server 是配置为使用本地帐号 DSN 示例可能失败.*/ 
sp_addlinkedserver ’VFP Testdata Database With DSN’, 
’’, 
’MSDASQL’,
’VFP System DSN’ 
go                 

最后更新时间:2008-11-05 00:20:30
文章评论
共有 0 位网友发表了评论
用户名: 新注册) 密码: 匿名评论 [查看所有评论]

评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。

考试全流程