国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
[原創(chuàng)] 使用SQL DTS功能實現(xiàn)從DB/2向SQL Server傳輸數(shù)據(jù)

[原創(chuàng)] 使用SQL DTS功能實現(xiàn)從DB/2向SQL Server傳輸數(shù)據(jù).


www.ecubestudio.com

【前言】
經(jīng)過自行測試SQL2000 DTS功能,感覺通過DTS工具從DB/2取數(shù)來得很方便、容易實現(xiàn)?,F(xiàn)將實施步驟貼出來,以供參考。

【環(huán)境】
IBM AS/400e、OS/400、DB/2、 ERP 
IBM PC SERVER、WIN2000 SERVER、 SQL2000

【標題】
《如何使用SQL2000  DTS功能實現(xiàn)從DB/2向SQL Server傳輸數(shù)據(jù)?》
下面以LIU/EXECTL(EXECTL)的PF為例,圖文并茂進行闡述:

1。首先在Win2000 Server平臺安裝Client Access/400,并確認ODBC中有“Client Access ODBC Driver(32-bit)”驅(qū)動:

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








 qingzhou 回復(fù)于:2004-06-15 16:44:12

2。在Win2000 Server平臺安裝SQL2000中文標準版,保證SQL服務(wù)器管理器相關(guān)服務(wù)啟動后,執(zhí)行“導(dǎo)入和導(dǎo)出數(shù)據(jù)”:







 qingzhou 回復(fù)于:2004-06-15 16:45:39

3。出現(xiàn)“DTS導(dǎo)入/導(dǎo)出向?qū)?#8221;界面,下一步:







 qingzhou 回復(fù)于:2004-06-15 16:47:10

4。在數(shù)據(jù)源中選取“Client Access ODBC Driver(32-bit)”驅(qū)動,同時新建“用戶/系統(tǒng)DSN”:







 qingzhou 回復(fù)于:2004-06-15 16:49:15

5。建立系統(tǒng)數(shù)據(jù)源:







 qingzhou 回復(fù)于:2004-06-15 16:51:13

6。選擇“Client Access ODBC Driver(32-bit)”作為數(shù)據(jù)源驅(qū)動程序:







 qingzhou 回復(fù)于:2004-06-15 16:55:02

7。點擊完成:







 qingzhou 回復(fù)于:2004-06-15 16:56:02

8。在彈出的配置窗口中輸入“數(shù)據(jù)源名”和選取系統(tǒng)IP地址(即:AS/400 ip address),同時建議將“SQL缺省庫”指定為要操作的庫,確定退出當前窗口:












 qingzhou 回復(fù)于:2004-06-15 17:03:59

9。然后直接在“用戶/系統(tǒng)DSN”欄輸入剛才創(chuàng)建的名稱,如:EXECTL,并在下面欄輸入登陸AS/400的user profile和password(具備足夠權(quán)限),下一步:







 qingzhou 回復(fù)于:2004-06-15 17:07:19

10。“目的”欄選擇“用于SQL Server的Microsoft OLE DB提供程序”,下面的“數(shù)據(jù)庫”自行新建一個,如:AS400_Date:







 qingzhou 回復(fù)于:2004-06-15 17:09:09

11。指定表的處理類型,此處為“從源數(shù)據(jù)庫復(fù)制表和視圖”:







 qingzhou 回復(fù)于:2004-06-15 17:11:09

12。接著選擇要處理的在OS/400上的PF,如:LIU/EXECTL:







 qingzhou 回復(fù)于:2004-06-15 17:14:04

13。設(shè)置好調(diào)度DTS包的時間、執(zhí)行頻率以及保存事項:












 qingzhou 回復(fù)于:2004-06-15 17:15:37

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







 qingzhou 回復(fù)于:2004-06-15 17:16:56

15。出現(xiàn)配置摘要,確認無誤后點完成:







 qingzhou 回復(fù)于:2004-06-15 17:18:31

16。如果上面13步驟“時間”—立即運行,將出現(xiàn)立即運行畫面,完成后結(jié)果如下:







 qingzhou 回復(fù)于:2004-06-15 17:20:22

17。啟動SQL“企業(yè)管理器”,在“數(shù)據(jù)轉(zhuǎn)換服務(wù)—本地包”中將出現(xiàn)剛才成功創(chuàng)建的DTS包—test:







 qingzhou 回復(fù)于:2004-06-15 17:21:49

18。雙擊test DTS包可以出現(xiàn)下圖編輯畫面:







 qingzhou 回復(fù)于:2004-06-15 17:23:17

19。同時在AS400_Date的表中出現(xiàn)EXECTL的表,進行查詢操作查看內(nèi)容:







 qingzhou 回復(fù)于:2004-06-15 17:25:51

20。在下表中可以清楚看到EXECTL的各個字段和記錄,至此整個從DB/2→SQL2000數(shù)據(jù)傳輸工作全面完成。







 xuguopeng 回復(fù)于:2004-06-15 18:02:39

哈哈 第一個頂 這么快就完成了


 mamei 回復(fù)于:2004-06-15 18:15:21

呵呵!
這就是取數(shù)據(jù),還要做一些相應(yīng)的處理!


 qingzhou 回復(fù)于:2004-06-15 18:23:22

是的,現(xiàn)在是盡量要求客戶端軟件的后臺數(shù)據(jù)庫用這個導(dǎo)出數(shù)據(jù),這樣工作量就會小些。
或者修正企業(yè)的ERP生產(chǎn)系統(tǒng),讓PF文件盡量滿足客戶端軟件的后臺接口要求。
解決了取數(shù)問題,而且實現(xiàn)了“類似實時”取數(shù)功能,所以其它問題解決起來相對簡單了。


 mamei 回復(fù)于:2004-06-15 18:27:58

我現(xiàn)在正在用ACCESS來取數(shù)據(jù)!

取實時的數(shù)據(jù)不太好處理!


 mamei 回復(fù)于:2004-06-15 18:32:13

以前還想用ORACLE來實現(xiàn)這個功能!

可惜不懂ORACLE!


 qingzhou 回復(fù)于:2004-06-15 18:33:44

引用:原帖由 "mamei" 發(fā)表:
我現(xiàn)在正在用ACCESS來取數(shù)據(jù)!
取實時的數(shù)據(jù)不太好處理!


"實時"我覺得只是相對問題而言,如果要求很嚴格,那就要采用觸發(fā)器的功能了,但這樣實施起來不僅增加難度,而且會有所降低系統(tǒng)的性能。
ACCESS本身數(shù)據(jù)庫受限制,不支持超過2G的數(shù)據(jù),可以考慮用用SQL或者ORACLE。


 wildfish 回復(fù)于:2004-06-16 11:42:22

老大,如果數(shù)據(jù)量大的確很恐怖。這樣機器負載也會相應(yīng)的增加。
http://www.microsoft.com/china/technet/prodtechnol/sql/2000/deploy/dtssql2k.mspx
建議老大看看dts編程的,看看能否增量的下傳數(shù)據(jù),呵呵,我知道可以,但是沒時間看,所以還是把難題留給老大解決。


 ibmas400 回復(fù)于:2004-06-16 15:42:06

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


 kimdai 回復(fù)于:2004-06-17 11:35:47

辛苦啊,看看如何自動增量的導(dǎo)入更有價值


 qingzhou 回復(fù)于:2004-06-17 15:04:59

引用:原帖由 "wildfish" 發(fā)表:
老大,如果數(shù)據(jù)量大的確很恐怖。這樣機器負載也會相應(yīng)的增加。
http://www.microsoft.com/china/technet/prodtechnol/sql/2000/deploy/dtssql2k.mspx
建議老大看看dts編程的,看看能否增量的下傳數(shù)據(jù),呵呵,我知?.........


通過SQL2000要訪問OS/400上的PF就那么幾個,所以不存在數(shù)據(jù)量很大的問題。
我仔細看DTS包Design窗口,發(fā)覺倒是有“大容量插入任務(wù)”功能,此功能可以提高訪問大容量數(shù)據(jù)的效率。







 mamei 回復(fù)于:2004-06-17 18:22:31

引用:原帖由 "qingzhou"]12。接著選擇要處理的在OS/400上的PF,如:LIU/EXECTL:
 發(fā)表:


我做到這步就出錯?。。?br>







 mamei 回復(fù)于:2004-06-17 18:25:13

如果在這里選第二項,
就不會報錯?。?!







 qingzhou 回復(fù)于:2004-06-17 18:27:30

引用:原帖由 "mamei" 發(fā)表:


我做到這步就出錯!??!


你真是不幸, :D ,我這幾天反復(fù)做了幾遍都沒問題。。。
檢查SQL2000配置是否正確?
只怕一時講不明白,SQL安裝正常,配置按照步驟走的話應(yīng)該沒問題的。


 mamei 回復(fù)于:2004-06-17 18:30:44

是的,
現(xiàn)在只能麻煩一點,

選第二個選項??!

搞不懂是為什么呀!


 qingzhou 回復(fù)于:2004-06-17 18:32:40

引用:原帖由 "mamei" 發(fā)表:
是的,
現(xiàn)在只能麻煩一點,

選第二個選項??!

搞不懂是為什么呀!


第二選項是提供查詢的功能,接著的窗口會讓你輸入SQL語句。。。
實現(xiàn)的目的不一樣的。


 mamei 回復(fù)于:2004-06-17 18:38:03

我這邊也就是幾個表,用SQL連起來一樣用!


 wildfish 回復(fù)于:2004-06-18 09:29:54

mamei,如果你指定sql的話,你得加上庫名,而且還要你的用戶有權(quán)限查詢。你可以把你的sql放在400上面看看能否執(zhí)行,當然了"."要換成"/"


 qingzhou 回復(fù)于:2004-06-21 09:55:07

引用:原帖由 "mamei" 發(fā)表:
以前還想用ORACLE來實現(xiàn)這個功能!
可惜不懂ORACLE!


安裝完CA/400后,同時會有"OLEDB For db2/400"數(shù)據(jù)接口方式。
然后在NT上安裝數(shù)據(jù)庫Oracle8i,借助"OLEDB for Oracle Net8"配置從DB/2往Oracle轉(zhuǎn)移數(shù)據(jù)的步驟,一樣能夠達到目的。


 彩黑 回復(fù)于:2004-07-08 14:43:36

兩臺機器上兩個sql數(shù)據(jù)庫要實現(xiàn)同步,按照上面這位大師的方法,初了第一次是導(dǎo)入時正確外,其他時間的數(shù)據(jù)還是不同哦,在看data transormation services里的dts數(shù)據(jù)包沒運行,sqlserver agent里的jobs也顯示該任務(wù)沒運行,請問各位大師,是怎么回事哦,試了好多方法了都不行,頭痛哦,那位幫頂?。????


 彩黑 回復(fù)于:2004-07-08 14:45:21

兩臺機器上兩個sql數(shù)據(jù)庫要實現(xiàn)同步,按照上面這位大師的方法,初了第一次是導(dǎo)入時正確外,其他時間的數(shù)據(jù)還是不同哦,在看data transormation services里的dts數(shù)據(jù)包沒運行,sqlserver agent里的jobs也顯示該任務(wù)沒運行,請問各位大師,是怎么回事哦,試了好多方法了都不行,頭痛哦,那位幫頂啊????


 qingzhou 回復(fù)于:2004-07-08 16:16:27

引用:原帖由 "彩黑"]兩臺機器上兩個sql數(shù)據(jù)庫要實現(xiàn)同步,按照上面這位大師的方法,初了第一次是導(dǎo)入時正確外,其他時間的數(shù)據(jù)還是不同哦,在看data transormation services里的dts數(shù)據(jù)包沒運行,sqlserver agent里的jobs也顯示該任務(wù)沒..........


本文的做法是從IBM AS/400往SQL2000推數(shù)據(jù),而不是在2臺SQL SERVER之間進行數(shù)據(jù)同步,所以不能混為一談!

如果要實現(xiàn)2臺SQL SERVER實現(xiàn)數(shù)據(jù)同步,請試試下面辦法:

《定時同步SQL服務(wù)器上的數(shù)據(jù)》

--測試環(huán)境:SQL Server2000,遠程服務(wù)器名: xz,用戶名為:sa,無密碼,測試數(shù)據(jù)庫:test

--服務(wù)器上的表(查詢分析器連接到服務(wù)器上創(chuàng)建)
create table [user](id int primary key,number varchar(4),name varchar(10))
go

--以下在局域網(wǎng)(本機操作)
--本機的表,state說明:null 表示新增記錄,1 表示修改過的記錄,0 表示無變化的記錄
if exists (select * from dbo.sysobjects where id = object_id(N'[user]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
 drop table [user]
GO
create table [user](id int identity(1,1),number varchar(4),name varchar(10),state bit)
go

--創(chuàng)建觸發(fā)器,維護state字段的值
create trigger t_state on [user]
after update
as
update [user] set state=1
from [user] a join inserted b on a.id=b.id
where a.state is not null
go

--為了方便同步處理,創(chuàng)建鏈接服務(wù)器到要同步的服務(wù)器
--這里的遠程服務(wù)器名為: xz,用戶名為:sa,無密碼
if exists(select 1 from master..sysservers where srvname='srv_lnk')
 exec sp_dropserver 'srv_lnk','droplogins'
go
exec sp_addlinkedserver  'srv_lnk','','SQLOLEDB','xz'
exec sp_addlinkedsrvlogin 'srv_lnk','false',null,'sa'
go

--創(chuàng)建同步處理的存儲過程
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[p_synchro]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
 drop procedure [dbo].[p_synchro]
GO
create proc p_synchro
as
--set  XACT_ABORT on
--啟動遠程服務(wù)器的MSDTC服務(wù)
--exec master..xp_cmdshell 'isql /S"xz" /U"sa" /P"" /q"exec master..xp_cmdshell ''net start msdtc'',no_output"',no_output

--啟動本機的MSDTC服務(wù)
--exec master..xp_cmdshell 'net start msdtc',no_output

--進行分布事務(wù)處理,如果表用標識列做主鍵,用下面的方法
--BEGIN DISTRIBUTED TRANSACTION
 --同步刪除的數(shù)據(jù)
 delete from srv_lnk.test.dbo.[user]
  where id not in(select id from [user])

 --同步新增的數(shù)據(jù)
 insert into srv_lnk.test.dbo.[user]
 select id,number,name from [user] where state is null
 
 --同步修改的數(shù)據(jù)
 update srv_lnk.test.dbo.[user] set
  number=b.number,name=b.name
 from srv_lnk.test.dbo.[user] a
  join [user] b on a.id=b.id
 where b.state=1
 
 --同步后更新本機的標志
 update [user] set state=0 where isnull(state,1)=1
--COMMIT TRAN
go

--創(chuàng)建作業(yè),定時執(zhí)行數(shù)據(jù)同步的存儲過程
if exists(SELECT 1 from msdb..sysjobs where name='數(shù)據(jù)處理')
 EXECUTE msdb.dbo.sp_delete_job @job_name='數(shù)據(jù)處理'
exec msdb..sp_add_job @job_name='數(shù)據(jù)處理'

--創(chuàng)建作業(yè)步驟
declare @sql varchar(800),@dbname varchar(250)
select @sql='exec p_synchro'   --數(shù)據(jù)處理的命令
 ,@dbname=db_name()   --執(zhí)行數(shù)據(jù)處理的數(shù)據(jù)庫名

exec msdb..sp_add_jobstep @job_name='數(shù)據(jù)處理',
 @step_name = '數(shù)據(jù)同步',
 @subsystem = 'TSQL',
 @database_name=@dbname,
    @command = @sql,
 @retry_attempts = 5,   --重試次數(shù)
 @retry_interval = 5    --重試間隔

--創(chuàng)建調(diào)度
EXEC msdb..sp_add_jobschedule @job_name = '數(shù)據(jù)處理', 
 @name = '時間安排',
 @freq_type = 4,     --每天
 @freq_interval = 1,    --每天執(zhí)行一次
 @active_start_time = 00000  --0點執(zhí)行
go

[ 本帖最后由 qingzhou 于 2006-2-5 21:09 編輯 ]


 彩黑 回復(fù)于:2004-07-08 17:58:35

如果是大量的數(shù)據(jù)表呢?按照這樣的方式是不是要用分析器寫語句來執(zhí)行數(shù)據(jù)同步啊,因為我對數(shù)據(jù)庫不是很了解,可能一下子沒理解你說呢,我還在學(xué)習(xí)當中,所以如果誤解的地方請諒解。 :D


 mario663 回復(fù)于:2006-02-05 15:09:33

可不可以實現(xiàn)同步了,SQL 修改數(shù)據(jù)后在傳回去呀!


 utirei 回復(fù)于:2006-02-05 15:57:32

樓主辛苦了?。?!
提個問題哦pc db2+db2/400會如何呢?
是不是會更簡單?


 qingzhou 回復(fù)于:2006-02-05 21:30:08

引用:原帖由 utirei 于 2006-2-5 15:57 發(fā)表
樓主辛苦了?。?!
提個問題哦pc db2+db2/400會如何呢?
是不是會更簡單? 


考慮已經(jīng)購買了SQL LICENSE以及實際環(huán)境問題,所以目前本地EDI系統(tǒng)在PC端處理最終采用了VB+SQL2000 —> DB2/400 的處理辦法。


 sleepalong 回復(fù)于:2006-07-26 10:01:34

google到樓主的帖子,正好有一個問題請教

我按照樓主的設(shè)置做了DTS從AS400上導(dǎo)數(shù)據(jù)導(dǎo)SQL Server下來.單純的執(zhí)行DTS包沒問題;問題出現(xiàn)作業(yè)調(diào)度DTS時不能從AS400上導(dǎo)入數(shù)據(jù),看癥狀似乎是兩者沒有通信,還請樓主幫忙分析一下


 qingzhou 回復(fù)于:2006-07-26 16:16:00

引用:原帖由 sleepalong 于 2006-7-26 10:01 發(fā)表
google到樓主的帖子,正好有一個問題請教

我按照樓主的設(shè)置做了DTS從AS400上導(dǎo)數(shù)據(jù)導(dǎo)SQL Server下來.單純的執(zhí)行DTS包沒問題;問題出現(xiàn)作業(yè)調(diào)度DTS時不能從AS400上導(dǎo)入數(shù)據(jù),看癥狀似乎是兩者沒有通信,還請樓主幫忙 ... 


出現(xiàn)什么提示???


 sleepalong 回復(fù)于:2006-07-27 10:16:41

引用:原帖由 qingzhou 于 2006-7-26 16:16 發(fā)表

出現(xiàn)什么提示??? 



什么提示都沒有,所以才覺得無從下手.感覺是一直死在那里

另外看到一些資料說,有可能是SQL Server Agent沒有這個包所要訪問的資源的權(quán)限,目前因為一些原因不能測試.不知道是否是因此原因.


 tonyone_wyx 回復(fù)于:2006-09-13 14:36:36

我用上面的方法漢字轉(zhuǎn)換后是亂碼,應(yīng)該如何處理?


 qingzhou 回復(fù)于:2006-09-13 20:20:46

引用:原帖由 tonyone_wyx 于 2006-9-13 14:36 發(fā)表
我用上面的方法漢字轉(zhuǎn)換后是亂碼,應(yīng)該如何處理? 


檢查400端PF的OBJECT的CCSID和LANGID是否為935/CHS。


 gpm1xf 回復(fù)于:2006-09-13 20:48:21

QINGZHOU你現(xiàn)在在哪里?告訴我聯(lián)系方法?


 tonyone_wyx 回復(fù)于:2006-09-15 09:13:14

CCSID不是935應(yīng)該如何處理?不會再建個同樣的935的數(shù)據(jù)庫吧?


 =AS400= 回復(fù)于:2006-10-17 19:19:58

:D如何實現(xiàn)增量的數(shù)據(jù)傳輸?。坷洗髱臀覀兛聪掳桑?!


 frankshu 回復(fù)于:2007-01-09 13:36:19

dts如何控制訪問權(quán)限?

[ 本帖最后由 qingzhou 于 2007-1-9 17:10 編輯 ]


 qingzhou 回復(fù)于:2007-01-09 17:10:32

引用:原帖由 frankshu 于 2007-1-9 13:36 發(fā)表
dts如何控制訪問權(quán)限? 


實質(zhì)就是控制ODBC訪問數(shù)據(jù)庫權(quán)限。

本版面也有帖子討論,具體可參考:
http://bbs.chinaunix.net/viewthread.php?tid=883299&extra=page%3D1
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
轉(zhuǎn)載:SQL數(shù)據(jù)庫筆試題
Microsoft SQL Server 2012 官方簡體中文版--腳本之家
在SQL Server 2005中連接Oracle,完成查詢、插入操作
為什么國內(nèi)企業(yè)不喜歡用Access數(shù)據(jù)庫?
在oracle中通過鏈接服務(wù)器(dblink)訪問sql server
SQL SERVER2005中利用dts將oracle數(shù)據(jù)庫導(dǎo)入到SQL SERVER2005
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服