馭夢科技-政企資訊化服務提供商
0531-85151617

用友U8備份檔案有哪些方法

更新時間☁·✘✘:2020-01-07      作者☁·✘✘:管理員      人氣☁·✘✘:93

用友財務軟體是目前國內財務領域中使用得最廣泛的一種☁↟▩↟,在使用中需要備份檔案☁↟▩↟,那麼在備份檔案的方法有哪些呢·↟◕◕☁?

  一▩│↟、分析過程

  用友8.51在備份的時候☁↟▩↟,一般會產生兩個檔案☁·✘✘:UFDATA.BA_和UfErpYer.Lst.其中UfErpYer.Lst比較小☁↟▩↟,不到1K☁↟▩↟,而UFDATA.BA_通常比較大│╃。由此☁↟▩↟,我們判斷☁↟▩↟,財務資料應該在UFDATA.BA_中│╃。

  我們用UltraEdit軟體開啟UfErpYer.Lst檔案☁↟▩↟,發現它其實就是一個文字檔案☁↟▩↟,儲存著備份相關的一些資訊☁↟▩↟,如軟體版本▩│↟、備份日期▩│↟、賬套年度▩│↟、檔案路徑等│╃。而開啟UFDATA.BA_檔案時☁↟▩↟,我們發現是一堆亂碼☁↟▩↟,甚至找不到常見的一些檔案頭的資訊│╃。因此我們初步判斷它有可能是壓縮過的檔案│╃。而且☁↟▩↟,從常理講☁↟▩↟,考慮到磁碟空間的問題☁↟▩↟,資料檔案備份的時候通常也會壓縮處理│╃。

  嘗試用WinRar開啟UFDATA.BA_☁↟▩↟,成功│╃。解壓後☁↟▩↟,得到一個檔案☁·✘✘:UFDATA.檔案沒有後綴名☁↟▩↟,因此我們還是先用UltraEdit開啟│╃。在檔案頭部☁↟▩↟,我們看到有“TAPE”▩│↟、“Microsoft SQL Server”等字樣☁↟▩↟,因此我們初步判斷它跟SQL Server有關│╃。

  根據以上思路☁↟▩↟,我們反過來比較☁↟▩↟,檢視SQL Server資料庫的各種檔案的頭部☁↟▩↟,看是否有與UFDATA 檔案頭相似的檔案│╃。SQL Server資料庫中☁↟▩↟,與資料相關的檔案☁↟▩↟,我們平時接觸比較多的主要有資料檔案和備份裝置檔案│╃。新建一個空的資料庫☁↟▩↟,用UltraEdit檢視它的資料檔案的頭部☁↟▩↟,未發現相關字樣☁↟▩↟,而建立一個備份裝置後☁↟▩↟,檢視該檔案的頭部☁↟▩↟,正好跟UFDATA檔案的頭部是一樣的│╃。因此我們初步判定UFDATA檔案為SQL Server資料庫的備份裝置檔案│╃。並且☁↟▩↟,我們知道TAPE是磁帶的意思☁↟▩↟,而SQL Server中跟磁帶相關的通常與資料庫的備份有關係│╃。

  接下來我們就分析UFDATA檔案中的內容│╃。開啟SQL Server的企業管理器☁↟▩↟,新建一個備份裝置☁↟▩↟,並將檔名指定我我們解壓後得到的UFDATA檔案│╃。確定後☁↟▩↟,檢視新建立備份裝置的內容☁↟▩↟,發現它其實是一個(或多個)資料庫的完全備份│╃。將它還原後☁↟▩↟,我們可以看到☁↟▩↟,這是用友的一個賬套資料庫│╃。

  對一個本地的資料庫☁↟▩↟,我們就可以根據自己的需要☁↟▩↟,進行相關的查詢和操作了│╃。到此為止☁↟▩↟,我們其實已經完成了將一個用友U8.51的備份檔案轉換成我們可操作資料庫的過程│╃。但如果僅僅如此☁↟▩↟,那麼本文其實是沒有什麼意義的☁↟▩↟,因為這個步驟我們可以很容易地利用AO軟體來實現│╃。

  在實際工作中☁↟▩↟,我們遇到的往往不是單個的賬套│╃。由於很多企業有很多獨立核算的分公司☁↟▩↟,並且每個公司每年都要建一套賬☁↟▩↟,因此☁↟▩↟,我們面對的往往是十幾個▩│↟、幾十個賬套☁↟▩↟,有時甚至會面對上百個賬套☁↟▩↟,而AO中又沒有提供批次匯入的辦法☁↟▩↟,如果一個一個匯入的話效率太低│╃。基於這種情況☁↟▩↟,本文就利用上述分析的結果☁↟▩↟,給出一個解決的辦法☁↟▩↟,能讓我們批次匯入用友的備份資料│╃。

  二▩│↟、解決辦法

  要實現批次匯入☁↟▩↟,必須編寫程式☁↟▩↟,實現上述分析過程中的解壓▩│↟、新增備份裝置▩│↟、還原資料庫▩│↟、抽取資料等步驟│╃。我們首先對每一個關鍵步驟給出相應的解決辦法☁↟▩↟,最後再給出一個總體的流程│╃。

  檔案解壓;利用Win32的API☁·✘✘:ShellExecuteEx☁↟▩↟,呼叫WinRar將壓縮檔案解壓到指定的臨時資料夾下☁↟▩↟,並得到解壓程式的控制代碼(前提是已經安裝了WinRar軟體)│╃。其中要用到SHELLEXECUTEINFO這個結構☁↟▩↟,用來指定WinRar的路徑以及相應的解壓引數│╃。具體可以查閱Win32 API幫助│╃。

  新增裝置;利用SQL Server 2000的儲存過程sp_addumpdevice新增裝置檔案│╃。

  還原資料庫;利用SQL Server 2000的命令Restore DATABASE☁↟▩↟,從裝置中的備份還原資料庫│╃。另外☁↟▩↟,檢視備份文裝置中的備份資料庫資訊可以使用命令☁·✘✘:RESTORE HEADERONLY.

  刪除備份裝置;可以使用儲存過程☁·✘✘:sp_dropdevice.詳細資訊可以查閱SQL Server 2000的幫助文件│╃。

  接下來我們就給出批次匯入用友8.51備份檔案的主要流程☁·✘✘:

  定義SHELLEXECUTEINFO型別的變數☁·✘✘:SI

  指定SI的相關引數☁·✘✘:動作為“Open”▩│↟、檔案為WinRar的執行檔案(指定長檔名)

  對每個備份檔案UFDATA.BA_☁↟▩↟,迴圈處理(迴圈1)

  得到檔案路徑和檔名☁↟▩↟,以及某些賬套資訊(公司▩│↟、年份等等)

  指定SI的引數為☁·✘✘:x sFile *.* sTemp

  (注☁·✘✘:sFile為備份檔案的長檔名☁↟▩↟,sTemp為一個臨時資料夾)

  呼叫☁·✘✘:ShellExecuteEx SI

  獲取SI的狀態直到它執行完畢

  在資料庫伺服器上執行☁·✘✘:sp_addumpdevice disk☁↟▩↟,U8Back☁↟▩↟,physical_name

  (注☁·✘✘:U8Back為我們為裝置取的名☁↟▩↟,physical_name為解壓後得到的UFDATA檔案的長檔名)

  執行☁·✘✘:RESTORE HEADERONLY From U8Back☁↟▩↟,得到裝置中的備份列表記錄集

  (注☁·✘✘:一條記錄對應於一個備份)

  對備份列表記錄集的每條記錄☁↟▩↟,迴圈處理(迴圈2)

  根據列表記錄集中的內容☁↟▩↟,得到資料庫的某些資訊(如賬套年份)

  Restore DATABASE UF8 From U8Back with File=file_number☁↟▩↟,Move Ufmodel

  To DataFile☁↟▩↟,MOVE Ufmodel_LOG TO LogFile☁↟▩↟, replace

  (注☁·✘✘:file_number為從備份列表記錄集中得到的要還原的備份集編號☁↟▩↟,DataFile與LogFile分別為還原後資料檔案與日誌檔案的長檔名)

  抽取資料庫中相應的資料

  (注☁·✘✘:如果把多個賬套資料合併到一起☁↟▩↟,需要根據前面得到的賬套資訊將資料進行區分☁↟▩↟,例如☁·✘✘:將各表加入賬套的年份▩│↟、公司▩│↟、地區等欄位或是能區分各賬套的一個關鍵字欄位進行區分)

  結束迴圈1

  在資料庫伺服器上執行☁·✘✘:sp_dropdevice U8Back☁↟▩↟,刪除裝置

  結束迴圈2

  善後工作☁↟▩↟,如刪除臨時檔案等

Solution
解決方案
  • 1
  • 2
一级少妇A片无码专区八戒资源网,国产熟女一区二区视频网站,亚洲国产99在线精品一区69堂,国产女人喷水嗷嗷叫在线观看