數(shù)據(jù)庫(kù)實(shí)時(shí)同步技術(shù)解決方案_第1頁(yè)
數(shù)據(jù)庫(kù)實(shí)時(shí)同步技術(shù)解決方案_第2頁(yè)
數(shù)據(jù)庫(kù)實(shí)時(shí)同步技術(shù)解決方案_第3頁(yè)
數(shù)據(jù)庫(kù)實(shí)時(shí)同步技術(shù)解決方案_第4頁(yè)
已閱讀5頁(yè),還剩26頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、-精選文檔 -數(shù)據(jù)庫(kù)實(shí)時(shí)同步技術(shù)解決方案一、前言隨著企業(yè)的不斷發(fā)展, 企業(yè)信息化 的不斷深入,企業(yè)內(nèi)部存在著各種各樣的異構(gòu)軟、硬件平臺(tái),形成了分布式異構(gòu)數(shù)據(jù)源。當(dāng)企業(yè)各應(yīng)用系統(tǒng)間需要進(jìn)行數(shù)據(jù)交流時(shí), 其效率及準(zhǔn)確性、 及時(shí)性必然受到影響。 為了便于信息資源的統(tǒng)一管理及綜合利用, 保障各業(yè)務(wù)部門(mén)的業(yè)務(wù)需求及協(xié)調(diào)工作,常常涉及到相關(guān)數(shù)據(jù)庫(kù)數(shù)據(jù)實(shí)時(shí)同步處理?;跀?shù)據(jù)庫(kù)的各類應(yīng)用系統(tǒng)層出不窮,可能涉及到包括ACCESS、SQLSERVER、ORACLE、DB2 、MYSQL 等數(shù)據(jù)庫(kù)。目前國(guó)內(nèi)外幾家大型的數(shù)據(jù)庫(kù)廠商提出的異構(gòu)數(shù)據(jù)庫(kù)復(fù)制方案主要有:Oracle 的透明網(wǎng)關(guān)技術(shù),IBM 的 CCD 表(一

2、致變化數(shù)據(jù)表)方案,微軟公司的出版者/ 訂閱等方案。但由于上述系統(tǒng)致力于解決異構(gòu)數(shù)據(jù)庫(kù)間復(fù)雜的交互操作,過(guò)于大而全而且費(fèi)用較高,并不符合一些中小企業(yè)的實(shí)際需求。本文結(jié)合企業(yè)的實(shí)際應(yīng)用實(shí)踐經(jīng)驗(yàn),根據(jù)不同的應(yīng)用類型, 給出了相應(yīng)的數(shù)據(jù)庫(kù)實(shí)時(shí)同步應(yīng)用的具體解決方案,主要包括:(1) SQLSERVER 到 SQLSERVER 同步方案(2) ORACLE 到 SQLSERVER 同步方案(3) ACCESS 到 SQLSERVER/ORACLE 同步方案可編輯-精選文檔 -二、 異構(gòu)數(shù)據(jù)庫(kù)異構(gòu)數(shù)據(jù)庫(kù)系統(tǒng)是相關(guān)的多個(gè)數(shù)據(jù)庫(kù)系統(tǒng)的集合,可以實(shí)現(xiàn)數(shù)據(jù)的共享和透明訪問(wèn),每個(gè)數(shù)據(jù)庫(kù)系統(tǒng)在加入異構(gòu)數(shù)據(jù)庫(kù)系統(tǒng)之前

3、本身就已經(jīng)存在,擁有自己的 DMBS 。異構(gòu)數(shù)據(jù)庫(kù)的各個(gè)組成部分具有自身的自治性,實(shí)現(xiàn)數(shù)據(jù)共享的同時(shí),每個(gè)數(shù)據(jù)庫(kù)系統(tǒng)仍保有自己的應(yīng)用特性、完整性控制和安全性控制。異構(gòu)數(shù)據(jù)庫(kù)的異構(gòu)性主要體現(xiàn)在以下幾個(gè)方面:1 、計(jì)算機(jī)體系結(jié)構(gòu)的異構(gòu)各數(shù)據(jù)庫(kù)可以分別運(yùn)行在大型機(jī)、小型機(jī)、工作站、PC 嵌入式系統(tǒng) 中。2 、基礎(chǔ)操作系統(tǒng)的異構(gòu)各個(gè)數(shù)據(jù)庫(kù)系統(tǒng)的基礎(chǔ)操作系統(tǒng)可以是Unix 、Windows NT、Linux 等。3 、DMBS 本身的異構(gòu)可以是同為關(guān)系型數(shù)據(jù)庫(kù)系統(tǒng)的Oracle 、 SQL Server 等,也可以是不同數(shù)據(jù)模型的數(shù)據(jù)庫(kù),如關(guān)系、模式、層次、網(wǎng)絡(luò)、面向?qū)ο螅瘮?shù)型數(shù)據(jù)庫(kù)共同組成一個(gè)異構(gòu)數(shù)

4、據(jù)庫(kù)系統(tǒng)。三、 數(shù)據(jù)庫(kù)同步技術(shù)可編輯-精選文檔 -對(duì)于異構(gòu)數(shù)據(jù)庫(kù)系統(tǒng), 實(shí)現(xiàn)數(shù)據(jù)共享應(yīng)當(dāng)達(dá)到兩點(diǎn): 一是實(shí)現(xiàn)數(shù)據(jù)庫(kù)轉(zhuǎn)換;二是實(shí)現(xiàn)數(shù)據(jù)的透明訪問(wèn)。 所謂透明訪問(wèn), 就是在異構(gòu)數(shù)據(jù)系統(tǒng)中用戶可以將異構(gòu)分布式數(shù)據(jù)庫(kù)系統(tǒng)看成普通的分布式數(shù)據(jù)庫(kù)系統(tǒng),用自己熟悉的數(shù)據(jù)處理語(yǔ)言去訪問(wèn)數(shù)據(jù)庫(kù),如同訪問(wèn)一個(gè)數(shù)據(jù)庫(kù)系統(tǒng)一樣。但目前還沒(méi)有一種廣泛使用的數(shù)據(jù)定義模型和數(shù)據(jù)查詢語(yǔ)言,實(shí)現(xiàn)數(shù)據(jù)的透明訪問(wèn)可以采用多對(duì)一轉(zhuǎn)換、 雙向的中間件等技術(shù)。開(kāi)放式數(shù)據(jù)庫(kù)互連(OpenDataBase Connectivity,簡(jiǎn)稱 ODBC )是一種用來(lái)在相關(guān)或不相關(guān)的數(shù)據(jù)庫(kù)管理系統(tǒng)中存取數(shù)據(jù)的標(biāo)準(zhǔn)應(yīng)用程序接口(API )。ODBC

5、為應(yīng)用程序提供了一套高層調(diào)用接口規(guī)范和基于動(dòng)態(tài)鏈接庫(kù)的運(yùn)行支持環(huán)境。目前,常用的數(shù)據(jù)庫(kù)應(yīng)用開(kāi)發(fā)的前端工具如Power Builder、 Delphi等都通過(guò)開(kāi)放數(shù)據(jù)庫(kù)互聯(lián)(ODBC) 接口來(lái)連接各種數(shù)據(jù)庫(kù)系統(tǒng)。 而多數(shù)數(shù)據(jù)庫(kù)管理系統(tǒng) (如: Oracle 、Sybase 、SQLServer 等)都提供了相應(yīng)的 ODBC 驅(qū)動(dòng)程序,使數(shù)據(jù)庫(kù)系統(tǒng)具有很好的開(kāi)放性。ODBC 接口的最大優(yōu)點(diǎn)是其互操作能力,理想情況下,每個(gè)驅(qū)動(dòng)程序和數(shù)據(jù)源應(yīng)支持完全相同的ODBC 函數(shù)調(diào)用和 SQL 語(yǔ)句,使得 ODBC 應(yīng)用程序可以操作所有的數(shù)據(jù)庫(kù)系統(tǒng)。然而,實(shí)際上不同的數(shù)據(jù)庫(kù)對(duì)SQL 語(yǔ)法的支持程度各不相同,因此

6、, ODBC 規(guī)范定義了驅(qū)動(dòng)程序的一致性級(jí)別,ODBC API 的一致性確定了應(yīng)用程序所能調(diào)用的ODBC 函數(shù)種類。數(shù)據(jù)庫(kù)同步是在兩個(gè)不同的數(shù)據(jù)庫(kù)之間進(jìn)行數(shù)據(jù)交換,以使得任何一個(gè)數(shù)據(jù)庫(kù)的改變,會(huì)以同樣的方式出現(xiàn)在另一個(gè)數(shù)據(jù)庫(kù)里。數(shù)據(jù)庫(kù)同步可以是單向的,也可以是雙向的。 單向同步也叫主從同步, 也就是說(shuō),其中的一個(gè)數(shù)據(jù)庫(kù)是主數(shù)可編輯-精選文檔 -據(jù)庫(kù),另一個(gè)數(shù)據(jù)庫(kù)是從數(shù)據(jù)庫(kù)。 只有主數(shù)據(jù)庫(kù)的改變可以被復(fù)制到從數(shù)據(jù)庫(kù)里去,從數(shù)據(jù)庫(kù)是被動(dòng)的。使用數(shù)據(jù)庫(kù)同步技術(shù), 用戶可以將一份數(shù)據(jù)發(fā)布到多臺(tái)服務(wù)器上,從而使不同的服務(wù)器用戶都可以在權(quán)限的許可的范圍內(nèi)共享這份數(shù)據(jù)。同步技術(shù)可以確保分布在不同地點(diǎn)的數(shù)據(jù)自

7、動(dòng)同步更新,從而保證數(shù)據(jù)的一致性。圖 1 數(shù)據(jù)庫(kù)同步示意圖目前國(guó)內(nèi)外幾家大型的數(shù)據(jù)庫(kù)廠商提出的異構(gòu)數(shù)據(jù)庫(kù)復(fù)制方案主要有:Oracle 的透明網(wǎng)關(guān)技術(shù), IBM 的 CCD 表(一致變化數(shù)據(jù)表)方案,微軟公司的出版者 / 訂閱者方案。國(guó)外的如土耳其中東科技大學(xué)的MIND系統(tǒng),美國(guó)密歇根迪爾波恩大學(xué)、 斯坦福大學(xué)的 TSUNMMIS項(xiàng)目,國(guó)內(nèi)的如中關(guān)村科技軟件有限公司、華中科技大學(xué)的Panorama系統(tǒng)都有過(guò)類似系統(tǒng)的研究。但是由于上述系統(tǒng)致力于解決異構(gòu)數(shù)據(jù)庫(kù)間復(fù)雜的交互操作,大而全,并不符合一些中小企業(yè)的需求,如 IBM 的 CCD 表方案實(shí)現(xiàn)復(fù)雜且CD 表占用資源較多維護(hù)費(fèi)用高昂,微軟公司的出

8、版者 / 訂閱者方案只能在NT 運(yùn)行等。而其它的系統(tǒng)大多都存在此類問(wèn)題。可編輯-精選文檔 -四、 局域網(wǎng)數(shù)據(jù)同步解決方案( 一) .SQLSERVER到 SQLSERVER 同步復(fù)制SQLSERVER 同類數(shù)據(jù)庫(kù)之間實(shí)現(xiàn)同步, 可直接參照 Microsoft的發(fā)布 / 訂閱模式。具體方法步驟如下:(1) SQL 復(fù)制的基本元素包括出版服務(wù)器、訂閱服務(wù)器、分發(fā)服務(wù)器、出版物、文章。(2) SQL 復(fù)制的工作原理SQLSERVER 主要采用出版物、訂閱的方式來(lái)處理復(fù)制。源數(shù)據(jù)所在的服務(wù)器是出版服務(wù)器, 負(fù)責(zé)發(fā)表數(shù)據(jù)。 出版服務(wù)器把要發(fā)表的數(shù)據(jù)的所有改變情況的拷貝復(fù)制到分發(fā)服務(wù)器, 分發(fā)服務(wù)器包含有

9、一個(gè)分發(fā)數(shù)據(jù)庫(kù),可接收數(shù)據(jù)的所有改變,并保存這些改變,再把這些改變分發(fā)給訂閱服務(wù)器。(3) SQLSERVER 復(fù)制技術(shù)類型SQLSERVER 提供了三種復(fù)制技術(shù),分別是:1 、快照復(fù)制 /2 、事務(wù)復(fù)制/3 、合并復(fù)制。(4) 發(fā)布 / 訂閱方案可編輯-精選文檔 -第一步:來(lái)配置出版服務(wù)器1、選中指定 服務(wù)器 節(jié)點(diǎn)。2、從 工具 下拉菜單的 復(fù)制 子菜單中選擇 發(fā)布、訂閱服務(wù)器和分發(fā) 命令。3 、系統(tǒng)彈出一個(gè)對(duì)話框點(diǎn) 下一步 然后看著提示一直操作到完成。4 、當(dāng)完成了出版服務(wù)器的設(shè)置以后系統(tǒng)會(huì)為該服務(wù)器的樹(shù)形結(jié)構(gòu)中添加一個(gè)復(fù)制監(jiān)視器。同時(shí)也生成一個(gè)分發(fā)數(shù)據(jù)庫(kù) (distribution) 。

10、第二步:創(chuàng)建出版物1 、選中指定的服務(wù)器。2 、從 工具 菜單的 復(fù)制 子菜單中選擇 創(chuàng)建和管理發(fā)布 命令。此時(shí)系統(tǒng)會(huì)彈出一個(gè)對(duì)話框。3 、選擇要?jiǎng)?chuàng)建出版物的數(shù)據(jù)庫(kù),然后單擊 創(chuàng)建發(fā)布 。4 、在 創(chuàng)建發(fā)布向?qū)?的提示對(duì)話框中單擊下一步 系統(tǒng)就會(huì)彈出一個(gè)對(duì)話框。對(duì)話框上的內(nèi)容是復(fù)制的三個(gè)類型。我們現(xiàn)在選第一個(gè)也就是默認(rèn)的快照發(fā)布(其他兩個(gè)大家可以去看看幫助)??删庉?精選文檔 -5 、單擊 下一步 系統(tǒng)要求指定可以訂閱該發(fā)布的數(shù)據(jù)庫(kù)服務(wù)器類型,SQLSERVER 允許在不同的數(shù)據(jù)庫(kù)如ORACLE 或 ACCESS 之間進(jìn)行數(shù)據(jù)復(fù)制。但是在這里我們選擇運(yùn)行"SQLSERVER2000&

11、quot; 的數(shù)據(jù)庫(kù)服務(wù)器。6 、單擊 下一步 系統(tǒng)就彈出一個(gè)定義文章的對(duì)話框也就是選擇要出版的表。7 、然后 下一步 直到操作完成。當(dāng)完成出版物的創(chuàng)建后創(chuàng)建出版物的數(shù)據(jù)庫(kù)也就變成了一個(gè)共享數(shù)據(jù)庫(kù)。第三步:設(shè)計(jì)訂閱1、選中指定的訂閱服務(wù)器。2 、從 工具 下拉菜單中選擇 復(fù)制 子菜單的 請(qǐng)求訂閱 。3 、按照單擊 下一步 操作直到系統(tǒng)會(huì)提示檢查SQLSERVER 代理服務(wù)的運(yùn)行狀態(tài),執(zhí)行復(fù)制操作的前提條件是SQLSERVER 代理服務(wù)必須已經(jīng)啟動(dòng)。4 、單擊 完成 。完成訂閱操作。完成上面的步驟其實(shí)復(fù)制也就是成功了。但是如何來(lái)知道復(fù)制是否成功了呢?這里可以通過(guò)這種方法來(lái)快速看是否成功。展開(kāi)出版

12、服務(wù)器下面的復(fù)制發(fā)布內(nèi)容右鍵發(fā)布內(nèi)容屬性擊活狀態(tài)然后點(diǎn)立即運(yùn)行代理程序接著點(diǎn)代理程序?qū)傩該艋钫{(diào)度把調(diào)度設(shè)置為每一天發(fā)生,每一分鐘,在 0 :00 :00 和 23 : 59 :59 之間。接下來(lái)就是判斷復(fù)制是否成功了打開(kāi)。可編輯-精選文檔 -C:/ProgramFiles/MicrosoftSQLServer/MSSQL/REPLDATA/unc/XIAOWANGZI_database_database下面看是不是有一些以時(shí)間做為文件名的文件夾差不多一分中就產(chǎn)生一個(gè)。 如果不確定是否創(chuàng)建成功, 打開(kāi)你的數(shù)據(jù)庫(kù)看在訂閱的服務(wù)器的指定訂閱數(shù)據(jù)庫(kù)下看是否能夠看到剛才所發(fā)布的表。( 二) 、 Orac

13、le 與 SQLServer 的互連及共享不同數(shù)據(jù)庫(kù)平臺(tái)的互連一般稱之為數(shù)據(jù)庫(kù)的異構(gòu)服務(wù),現(xiàn)在各大數(shù)據(jù)庫(kù)之間都可以實(shí)現(xiàn)這樣的異構(gòu)互連,只是各廠商的具體實(shí)現(xiàn)技術(shù)不一樣,如:在SQLSERVER里面叫做 LINKEDSERVER,通過(guò) ODBC 實(shí)現(xiàn)與其它數(shù)據(jù)庫(kù)的互聯(lián)。而 ORACLE 實(shí)現(xiàn)異構(gòu)服務(wù)的技術(shù)叫做透明網(wǎng)關(guān)Transparent Gateway,當(dāng)然之前 ORACLE 還采用過(guò)通用連接技術(shù)。 目前 ORACLE 利用透明網(wǎng)關(guān)可以實(shí)現(xiàn)和 SQLSERVER、 SYBASE、 DB2 等多種數(shù)據(jù)庫(kù)的互聯(lián)。透明網(wǎng)關(guān)的體系結(jié)構(gòu)也很簡(jiǎn)單,在ORACLE 和 SQL ERVER 之間使用ORACLE

14、 透明網(wǎng)關(guān)服務(wù)器實(shí)現(xiàn)互連互通,其中透明網(wǎng)關(guān)服務(wù)器可以與ORACLE或 SQLSERVER 數(shù)據(jù)庫(kù)在同一臺(tái)主機(jī)上,也可以是在獨(dú)立的一臺(tái)主機(jī)上。測(cè)試步驟如下:(1) 、在 SQLSERVER數(shù)據(jù)庫(kù)上創(chuàng)建測(cè)試賬號(hào)和表數(shù)據(jù)庫(kù) : PUBS,賬號(hào) cyx ,可編輯-精選文檔 -createtablet(cchar(10);(2) 、測(cè)試用數(shù)據(jù)庫(kù)和透明網(wǎng)關(guān)在同一臺(tái)機(jī)器上,透明網(wǎng)關(guān)在 oracle 默認(rèn)安裝時(shí)是不安裝的,所以如果你想用需要選擇這一選項(xiàng)。(3) 、安裝透明網(wǎng)關(guān)forsqlserver 的軟件后,可以在 $ORACLE_HOME下看到 tg4msql目錄,編輯$ORACLE_HOME/tg4ms

15、ql/admin/inittg4msql.sql文件確認(rèn)這一行正確:HS_FDS_CONNECT_INFO="SERVER=IP;DATABASE=pubs"(4) 、修改透明網(wǎng)關(guān) server 上的 listener.ora,在 SID_LIST 中加入以下內(nèi)容:(SID_NAME=tg4msql)#SID 自己命名(ORACLE_HOME=c:)(PROGRAM=tg4msql)(5) 、在 oracleserver 上的 tnsnames.ora中加入到透明網(wǎng)關(guān)的tnsname ,內(nèi)容如下:sql2k=(DESCRIPTION=(ADDRESS_LIST=可編輯-精選

16、文檔 -(ADDRESS=(PROTOCOL=TCP)(HOST= 1521)# 此處 HOST 填的是透明網(wǎng)關(guān) SERVER的地址)(CONNECT_DATA=(SID=tg4msql)# 此 SID 應(yīng)和透明網(wǎng)關(guān) SERVER 上設(shè)定的 SID 相同(HS=OK)(6) 、修改 ORACLESERVER的初始化參數(shù),將 global_names設(shè)為 false ,因?yàn)槲覀儾⒉皇褂肎LOBALNAME 。然后重起數(shù)據(jù)庫(kù)。(7) 、現(xiàn)在在 ORACLESERVER上創(chuàng)建 DBLINK 就可以了。以上測(cè)試實(shí)現(xiàn)通過(guò)透明網(wǎng)關(guān)來(lái)訪問(wèn)sqlserver 的數(shù)據(jù),只需要注意ORACLE 訪問(wèn)配置問(wèn)題。注意

17、事項(xiàng) :可編輯-精選文檔 -1、Oracle For SQLServer的透明網(wǎng)關(guān)在 UNIX 下無(wú)法實(shí)現(xiàn),目前只支持WIN ;原因很簡(jiǎn)單, SQLServer 本身不支持 UNIX ,所以 Oracle 也無(wú)法直接在UNIX 下訪問(wèn) SQL Server 。2、OracleFor 其它數(shù)據(jù)庫(kù)的透明網(wǎng)關(guān),如SYBASE 等有 UNIX 本版本的數(shù)據(jù)庫(kù)在 UNIX 可以實(shí)現(xiàn)。3、Oracle 透明網(wǎng)關(guān)軟件在Oracle8i 時(shí)是需要花錢(qián)另買(mǎi)的, 大約 1 萬(wàn) $;到 Oracle 9i時(shí)是作為數(shù)據(jù)庫(kù)的一個(gè)組件免費(fèi)發(fā)布的,安裝時(shí)在組件種選擇即可。4 、針對(duì)我們的實(shí)際應(yīng)用,如果有需要實(shí)現(xiàn)Oracle

18、到 SQLServer 的互連,我們需要另外用一臺(tái)WIN 下的 Oracle9i 來(lái)做透明網(wǎng)關(guān)服務(wù)器,其它UNIX 下的 Oracle 通過(guò)這個(gè)透明網(wǎng)關(guān)來(lái)訪問(wèn)SQLServer 。5 、同數(shù)據(jù)庫(kù)間的數(shù)據(jù)處理需使用標(biāo)準(zhǔn)SQL 來(lái)實(shí)現(xiàn)。6 、各數(shù)據(jù)庫(kù)中特殊的數(shù)據(jù)類型,需要在程序中實(shí)現(xiàn)轉(zhuǎn)換,應(yīng)盡量避免使用無(wú)法轉(zhuǎn)換的數(shù)據(jù)類型。( 三) 、Oracle 與 SQLServer 的實(shí)時(shí)同步盡管透明網(wǎng)關(guān)技術(shù)實(shí)現(xiàn)了OQACLE 與 SQLSERVER 的互連,但在同步應(yīng)用中不便于控制同步數(shù)據(jù)的要求,特別是ORACEL 與 SQLSERVER 存在數(shù)據(jù)類型轉(zhuǎn)換時(shí)存在困難。以下給出同步數(shù)據(jù)代碼樣例如下:可編輯-精

19、選文檔 -為實(shí)現(xiàn) ORACLE 到 SQLSERVER 的數(shù)據(jù)同步,首先需在 ORACLE中建一需同步的數(shù)據(jù)視圖,以便于操作訪問(wèn)。1 、在 ORACLE 中創(chuàng)建需同步的數(shù)據(jù)視圖2 、配置局域網(wǎng)客戶端建立tnsname.ora文件,使其能訪問(wèn)遠(yuǎn)程O(píng)RACLE 數(shù)據(jù)庫(kù)3 、在 SQLSERVER 中創(chuàng)建與 ORACLE 視圖同構(gòu)的數(shù)據(jù)庫(kù)表4 、定義同步方式及步驟5 、將 VBS 轉(zhuǎn)換成 EXE 文件,并將 EXE 程序制作成 windows服務(wù),以便在后臺(tái)運(yùn)行。6 、以下是 ORACLE 到 SQLSERVER 數(shù)據(jù)同步主要 VBS 示例代碼;= oracleTOsqlserver數(shù)據(jù)同步腳本 =

20、1. 檢測(cè)遠(yuǎn)程 oracle 服務(wù)器網(wǎng)絡(luò)是否連通 , 通則連接 ;2. 連接 oracle; 連接 sqlserver ;取 N 天的 cklsz 記錄集;3. 取 oracle 的 dataset; not in sqlserver中的 insert to sqlserver;可編輯-精選文檔 -4. 日志寫(xiě)入 txt 文件,以日期為文件名稱,只保留7 天的日志 ;=Do While Truedim f,txtfile- 創(chuàng)建日志文件對(duì)象 , 判定 7 天前的 log 文件是否存在,存在則刪除!-Set f = CreateObject("Scripting.FileSystemO

21、bject")set txtfile =f.opentextfile("D:wxjloracleTOsqlserver"&date&".txt",8,True)If f.FileExists("D:wxjloracleTOsqlserver"&date-7&".txt") Thenf.DeleteFile("D:wxjloracleTOsqlserver"&date-7&".txt")end if-ping oracl

22、e服務(wù)器,連通 ->則連接oracle/sqlserver -Set FileSys=CreateObject("Scripting.FileSystemObject")可編輯-精選文檔 -Set WShShell=CreateObject("WScript.Shell")RetCode=WShShell.Run("ping -n 1 " &IP , 0, True )ifRetCode=0Thentxtfile.write(date&" "&time&" - pin

23、g anywhere hostok ! ")-測(cè)試連接遠(yuǎn)程Info=True;User ID=qyselect;Password=qy08select12;DataSource=hydata"set rs_ora=createobject("adodb.recordset")sql_ora="select * from Hybjsb.V_QY_CKLSZ"Err.clearOn Error Resume Next -出錯(cuò)不顯示 ,執(zhí)行下一條rs_ora.open sql_ora,conn_ora,1,1可編輯-精選文檔 -rs_ora

24、.closeIf Err.Number=0 Thentxtfile.writeline("- connect anywhere database successful ! ")-連接本地sqlserver, insert sqlserverconn_local="PROVIDER=SQLOLEDB;DATASOURCE=local;UID=sa;PWD=sa"set rs_local = createobject("adodb.recordset")- 更新 30 天以內(nèi)的數(shù)據(jù)Nday=30dept="卷包車(chē)間 "

25、DB="wxjl_1bjb"call xcopy-可編輯-精選文檔 -elsetxtfile.writeline("- *遠(yuǎn)程數(shù)據(jù)庫(kù)連接失敗! * ")end ifelsetxtfile.writeline(date&" "&time&" - #網(wǎng)絡(luò)故障! #")end ifreleaseconnection conn_orareleaseconnection conn_localset f=nothingset txtfile=nothingset rs_local=nothingset

26、rs_ora=nothing間隔 5 分鐘循環(huán)一次可編輯-精選文檔 -WScript.Sleep 300000Loop-數(shù)據(jù)同步過(guò)程-Sub xcopy()dim records(0) -判斷 temp是否存在,存在則刪除sql_local="select count(1) as rec from "&DB&".dbo.sysobjects wherename=temp and xtype=U"rs_local.open sql_local,conn_local,1,1records=rs_local("rec")rs

27、_local.closeif records > 0 thensql_local="drop table "&DB&".dbo.temp"可編輯-精選文檔 -rs_local.open sql_local,conn_local,1,1end if(1) - 取當(dāng)前日期前 Nday 天的數(shù)據(jù)插入臨時(shí)表 tempsql_local="SELECT * INTO "&DB&".dbo.temp FROMOPENROWSET(MSDAORA.1,hydata;qyselect;qy08selec

28、t12,SELECT *FROMHybjsb.V_QY_CKLSZ) "sql_local=sql_local+" whereCONVERT(smalldatetime,dbilldate)<="+cstr(date)+" andCONVERT(smalldatetime,dbilldate)>= "+cstr(date-Nday)+""sql_local=sql_local+" and deptname="&dept&" and storname<>曲煙

29、寄售庫(kù)"rs_local.open sql_local,conn_local,1,1(2) - 判斷是否有新記錄sql_local=" SELECT count(1) as rec "可編輯-精選文檔 -sql_local=sql_local+" FROM "&DB&".dbo.temp "sql_local=sql_local+"where bid not in (select bid from"&DB&".dbo.t_ly where lyrq<=&qu

30、ot;+cstr(date)+" andlyrq>="+cstr(date-Nday)+")"rs_local.open sql_local,conn_local,1,1records=rs_local("rec")rs_local.closeif records > 0 then-有新記錄 , 追加記錄sql_local="insert into "&DB&".dbo.t_ly"sql_local=sql_local+"(bid,lyrq,djh,stor

31、name,deptname,lyr,custname,invclasscode,invclassname,chbm,lybjmc,lygg,lyxh,lyjh,graphid,lydw,lysl,lydj,lyje)"sql_local=sql_local+" SELECT "sql_local=sql_local+" bid,CONVERT(smalldatetime,dbilldate) as可編輯-精選文檔 -dbilldate,billcode,storname,deptname,psnname,custname,invclasscode,inv

32、classname,invcode,invname,invspec,invtype,invmnecode,graphid,measname,noutnum,nprice,noutmny"sql_local=sql_local+" FROM "&DB&".dbo.temp"sql_local=sql_local+" where bid not in (select bid from"&DB&".dbo.t_ly where lyrq<="+cstr(date)+&quo

33、t; andlyrq>="+cstr(date-Nday)+")"rs_local.open sql_local,conn_local,1,1txtfile.writeline(" ")txtfile.writeline(" * "&dept&"- "&date&" "&time&" ->new Add"+cstr(records)+"記錄 .")elsetxtfile.writelin

34、e(" ")txtfile.writeline(" - "&dept&"- no new data! ")可編輯-精選文檔 -end if(3) delete -刪除記錄sql_local="select count(1) as rec from"&DB&".dbo.t_ly"sql_local=sql_local+" where lyrq<="+cstr(date)+" andlyrq>="+cstr(date

35、-Nday)+""sql_local=sql_local+" and bid not in (select bid from"&DB&".dbo.temp)"rs_local.open sql_local,conn_local,1,1records=rs_local("rec")rs_local.closeif records >0 thensql_local="delete "&DB&".dbo.t_ly"sql_local=sql_l

36、ocal+" where lyrq<="+cstr(date)+" and可編輯-精選文檔 -lyrq>="+cstr(date-Nday)+""sql_local=sql_local+" and bid not in (select bid from"&DB&".dbo.temp)"rs_local.open sql_local,conn_local,1,1txtfile.writeline(" * "&dept&"-

37、"&date&" "&time&" ->delete "+cstr(records)+"記錄 .")elsetxtfile.writeline(" - "&dept&"- no delete data! ")end if(4) update -更新記錄sql_local="select count(1) as rec from"&DB&".dbo.temp"rs_local.o

38、pen sql_local,conn_local,1,1records=rs_local("rec")rs_local.close可編輯-精選文檔 -sql_local="update "&DB&".dbo.t_ly"sql_local=sql_local+" set "sql_local=sql_local+"lyrq=CONVERT(smalldatetime,T.dbilldate),djh=T.billcode,storname=T.storname,deptname=T.dept

39、name,custname=T.custname,"sql_local=sql_local+"invclasscode=T.invclasscode,invclassname=T.invclassname,chbm=T.invcode,lybjmc=T.invname,lygg=T.invspec,lyxh=T.invtype,"sql_local=sql_local+"lyjh=T.invmnecode,graphid=T.graphid,lydw=T.measname,lysl=T.noutnum,lydj=T.nprice,lyje=T.noutm

40、ny"sql_local=sql_local+" from "&DB&".dbo.t_ly AS A, "&DB&".dbo.tempAS T"sql_local=sql_local+" where A.lyrq<="+cstr(date)+" andA.lyrq>="+cstr(date-Nday)+""可編輯-精選文檔 -sql_local=sql_local+" and A.bid=T.bid"r

41、s_local.open sql_local,conn_local,1,1txtfile.writeline(" - "&dept&"- update data->"+cstr(records) +"記錄 ."txtfile.writeline(" ")end sub-(四)、 ACCESS 與 SQLServer 的實(shí)時(shí)同步由于 ACCESS 數(shù)據(jù)本身的特點(diǎn),桌面數(shù)據(jù)庫(kù),不支持網(wǎng)絡(luò)訪問(wèn)操作,因此要實(shí)現(xiàn)與 SQLSERVER 數(shù)據(jù)庫(kù)的同步,需要進(jìn)行目錄共享訪問(wèn)設(shè)置。 具體實(shí)現(xiàn)如下:1 、 共享

42、 ACCESS 數(shù)據(jù)庫(kù)目錄,并賦予一admin權(quán)限的用戶;2 、 測(cè)試局域網(wǎng)共享訪問(wèn):目錄 . ;3 、 代碼實(shí)現(xiàn)客戶機(jī)共享ACCESS 文件到服務(wù)器的拷貝;4 、 在同一服務(wù)器上實(shí)現(xiàn)ACCESS 到 SQLSERVER 數(shù)據(jù)的同步復(fù)制;可編輯-精選文檔 -5 、 以下主要 VBS 代碼實(shí)現(xiàn)了 MDB 文件復(fù)制及與 SQLSERVER 同步更新;= ACCESS .MDB文件實(shí)時(shí)備份過(guò)程=sub backupfile(txtfile,ip,db)Dim Path,fso,fsofile,net-初始化備份參數(shù)source_path="產(chǎn)品數(shù)碼跟蹤 "target_file

43、="D:WEBbarcodeprinterBACKUP"+trim(db)&".mdb"source_path="產(chǎn)品數(shù)碼跟蹤1"end iferr.clearPath="X:"Set fso = CreateObject("Scripting.FileSystemObject")Set fsofile = CreateObject("Scripting.FileSystemObject")可編輯-精選文檔 -Set net = CreateObject("WScript.Network")If Not fso.DriveExists(fso.GetDriveName(Path) Thenerr.clearOn Error Resume

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論