前言】
经过自行测试SQL2000 DTS功能,感觉通过DTS工具从DB/2取数来得很方便、容易实现。现将实施步骤贴出来,以供参考。

【环境】
IBM AS/400e、OS/400、DB/2、 ERP 
IBM PC SERVER、WIN2000 SERVER、 SQL2000

【标题】
《如何使用SQL2000  DTS功能实现从DB/2向SQL Server传输数据?》
下面以LIU/EXECTL(EXECTL)的PF为例,图文并茂进行阐述:

1。首先在Win2000 Server平台安装Client Access/400,并确认ODBC中有“Client Access ODBC Driver(32-bit)”驱动:

[  本帖最后由 qingzhou 于 2006-5-17 11:12 编辑 ]

0_22441087288916.gif






 qingzhou 回复于:2004-06-15 16:44:12

2。在Win2000 Server平台安装SQL2000中文标准版,保证SQL服务器管理器相关服务启动后,执行“导入和导出数据”:

1_52101087289052.gif





 qingzhou 回复于:2004-06-15 16:45:39

3。出现“DTS导入/导出向导”界面,下一步:

2_92091087289139.gif





 qingzhou 回复于:2004-06-15 16:47:10

4。在数据源中选取“Client Access ODBC Driver(32-bit)”驱动,同时新建“用户/系统DSN”:

3_37971087289229.gif





 qingzhou 回复于:2004-06-15 16:49:15

5。建立系统数据源:

4_48501087289355.gif





 qingzhou 回复于:2004-06-15 16:51:13

6。选择“Client Access ODBC Driver(32-bit)”作为数据源驱动程序:

5_67731087289473.gif





 qingzhou 回复于:2004-06-15 16:55:02

7。点击完成:

6_71561087289702.gif





 qingzhou 回复于:2004-06-15 16:56:02

8。在弹出的配置窗口中输入“数据源名”和选取系统IP地址(即:AS/400 ip address),同时建议将“SQL缺省库”指定为要操作的库,确定退出当前窗口:

7_66271087289762.gif




8_50541087289879.gif





 qingzhou 回复于:2004-06-15 17:03:59

9。然后直接在“用户/系统DSN”栏输入刚才创建的名称,如:EXECTL,并在下面栏输入登陆AS/400的user profile和password(具备足够权限),下一步:

9_85161087290239.gif





 qingzhou 回复于:2004-06-15 17:07:19

10。“目的”栏选择“用于SQL Server的Microsoft OLE DB提供程序”,下面的“数据库”自行新建一个,如:AS400_Date:

10_80431087290439.gif





 qingzhou 回复于:2004-06-15 17:09:09

11。指定表的处理类型,此处为“从源数据库复制表和视图”:

11_96701087290549.gif





 qingzhou 回复于:2004-06-15 17:11:09

12。接着选择要处理的在OS/400上的PF,如:LIU/EXECTL:

12_66591087290669.gif





 qingzhou 回复于:2004-06-15 17:14:04

13。设置好调度DTS包的时间、执行频率以及保存事项:

13_21021087290844.gif




14_24031087290780.gif





 qingzhou 回复于:2004-06-15 17:15:37

14。并给DTS包命名,如:test

15_12061087290937.gif





 qingzhou 回复于:2004-06-15 17:16:56

15。出现配置摘要,确认无误后点完成:

16_36911087291016.gif





 qingzhou 回复于:2004-06-15 17:18:31

16。如果上面13步骤“时间”—立即运行,将出现立即运行画面,完成后结果如下:

17_96011087291111.gif





 qingzhou 回复于:2004-06-15 17:20:22

17。启动SQL“企业管理器”,在“数据转换服务—本地包”中将出现刚才成功创建的DTS包—test:

18_81621087291222.gif





 qingzhou 回复于:2004-06-15 17:21:49

18。双击test DTS包可以出现下图编辑画面:

19_67021087291309.gif





 qingzhou 回复于:2004-06-15 17:23:17

19。同时在AS400_Date的表中出现EXECTL的表,进行查询操作查看内容:

20_49791087291397.gif





 qingzhou 回复于:2004-06-15 17:25:51

20。在下表中可以清楚看到EXECTL的各个字段和记录,至此整个从DB/2→SQL2000数据传输工作全面完成。

22_95891087291551.gif





 xuguopeng 回复于:2004-06-15 18:02:39

哈哈 第一个顶 这么快就完成了


 mamei 回复于:2004-06-15 18:15:21

呵呵!
这就是取数据,还要做一些相应的处理!


 qingzhou 回复于:2004-06-15 18:23:22

是的,现在是尽量要求客户端软件的后台数据库用这个导出数据,这样工作量就会小些。
或者修正企业的ERP生产系统,让PF文件尽量满足客户端软件的后台接口要求。
解决了取数问题,而且实现了“类似实时”取数功能,所以其它问题解决起来相对简单了。


 mamei 回复于:2004-06-15 18:27:58

我现在正在用ACCESS来取数据!

取实时的数据不太好处理!


 mamei 回复于:2004-06-15 18:32:13

以前还想用ORACLE来实现这个功能!

可惜不懂ORACLE!


 qingzhou 回复于:2004-06-15 18:33:44

引用: 原帖由 "mamei" 发表:
我现在正在用ACCESS来取数据!
取实时的数据不太好处理!


"实时"我觉得只是相对问题而言,如果要求很严格,那就要采用触发器的功能了,但这样实施起来不仅增加难度,而且会有所降低系统的性能。
ACCESS本身数据库受限制,不支持超过2G的数据,可以考虑用用SQL或者ORACLE。


 wildfish 回复于:2004-06-16 11:42:22

老大,如果数据量大的确很恐怖。这样机器负载也会相应的增加。
[url]http://www.microsoft.com/china/technet/prodtechnol/sql/2000/deploy/dtssql2k.mspx[/url]
建议老大看看dts编程的,看看能否增量的下传数据,呵呵,我知道可以,但是没时间看,所以还是把难题留给老大解决。


 ibmas400 回复于:2004-06-16 15:42:06

qingzhou真是好心人啊。。。
難得。


 kimdai 回复于:2004-06-17 11:35:47

辛苦啊,看看如何自动增量的导入更有价值


 qingzhou 回复于:2004-06-17 15:04:59

引用: 原帖由 "wildfish" 发表:
老大,如果数据量大的确很恐怖。这样机器负载也会相应的增加。
[url]http://www.microsoft.com/china/technet/prodtechnol/sql/2000/deploy/dtssql2k.mspx[/url]
建议老大看看dts编程的,看看能否增量的下传数据,呵呵,我知?.........


通过SQL2000要访问OS/400上的PF就那么几个,所以不存在数据量很大的问题。
我仔细看DTS包Design窗口,发觉倒是有“大容量插入任务”功能,此功能可以提高访问大容量数据的效率。

test_63121087455899.gif





 mamei 回复于:2004-06-17 18:22:31

引用: 原帖由 "qingzhou"]12。接着选择要处理的在OS/400上的PF,如:LIU/EXECTL:
 发表:


我做到这步就出错!!!

error_92461087467740.jpg





 mamei 回复于:2004-06-17 18:25:13

如果在这里选第二项,
就不会报错!!!

11_96701087290549_14361087467902.gif