国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      基于SQLSever的數(shù)據(jù)庫結(jié)構(gòu)自動升級方法

      文檔序號:9616350閱讀:298來源:國知局
      基于SQLSever的數(shù)據(jù)庫結(jié)構(gòu)自動升級方法
      【技術(shù)領域】
      [0001]本發(fā)明涉及數(shù)據(jù)庫升級技術(shù)領域,尤其涉及一種基于SQLSever的數(shù)據(jù)庫結(jié)構(gòu)自動升級方法。
      【背景技術(shù)】
      [0002]—套系統(tǒng),在其整個生命周期內(nèi),伴隨客戶增量需求和實現(xiàn)邏輯的變更,常常需要進行升級。包括軟件升級和數(shù)據(jù)庫升級。數(shù)據(jù)庫升級主要考慮增量升級,減量升級則沒有意義。主要包括表增加、字段增加、字段類型和長度變更等。

      【發(fā)明內(nèi)容】

      [0003]本發(fā)明要解決的技術(shù)問題在于提供一種基于SQLSever的數(shù)據(jù)庫結(jié)構(gòu)自動升級方法,以解決現(xiàn)有技術(shù)存在的問題。
      [0004]為解決上述技術(shù)問題,本發(fā)明采用以下技術(shù)方案:
      基于SQLSever的數(shù)據(jù)庫結(jié)構(gòu)自動升級方法,包括:
      使用SQLSever數(shù)據(jù)庫工具生成新版本的數(shù)據(jù)庫腳本;
      遍歷舊版本庫表和新版本數(shù)據(jù)庫腳本,對新版本的數(shù)據(jù)庫腳本與舊版本的數(shù)據(jù)庫表進行對比處理,獲取處理后的數(shù)據(jù),根據(jù)處理后的數(shù)據(jù)對舊版本的數(shù)據(jù)庫表進行修改。
      [0005],所述對新版本的數(shù)據(jù)庫腳本與舊版本的數(shù)據(jù)庫表進行對比處理,獲取處理后的數(shù)據(jù),根據(jù)獲取的處理后的數(shù)據(jù)對舊版本的數(shù)據(jù)庫表進行修改,包括:
      遍歷新版本的數(shù)據(jù)庫腳本的表名稱和舊數(shù)據(jù)庫表的表名稱,對它們一一進行對比比較,判斷是否是相同的名稱,篩選出新版本的數(shù)據(jù)庫腳本中與舊版本數(shù)據(jù)庫表相比新增加的表名稱,在舊版本的數(shù)據(jù)庫表中為新增加的表名稱建立新的庫表結(jié)構(gòu)。
      [0006]對具有相同表名稱的表對象,進一步依次判斷新版本的數(shù)據(jù)庫腳本與舊版本的數(shù)據(jù)庫表中每個表相對的每個字段的字段類型是否一致,不一致則使用新版本的數(shù)據(jù)庫腳本的字段類型代替舊版本的數(shù)據(jù)庫表的字段類型,對舊版本的數(shù)據(jù)庫表進行升級,一致則不替換。
      [0007]對具有相同表名稱的表對象,進一步判斷新版本的數(shù)據(jù)庫腳本對比舊版本的數(shù)據(jù)庫表每個表相對應的每個字段長度是否具有增量,如果具有增量則使用新版本的數(shù)據(jù)庫腳本的字段數(shù)據(jù)代替舊版本的數(shù)據(jù)庫表的字段數(shù)據(jù),對舊版本的數(shù)據(jù)庫表進行升級,不具有增量則不替換。
      [0008]本發(fā)明的有益效果:本發(fā)明可以自動進行數(shù)據(jù)庫升級問題,解決用戶不會操作sqlsever工具進行備份還原和升級的問題。
      【附圖說明】
      [0009]圖1為本發(fā)明的流程圖。
      【具體實施方式】
      [0010]如圖1所示本發(fā)明提供一種基于SQLSever的數(shù)據(jù)庫結(jié)構(gòu)自動升級方法升級時,它首先使用SQLSever數(shù)據(jù)庫工具生成新版本的數(shù)據(jù)庫腳本;然后遍歷舊版本的數(shù)據(jù)庫表,同時遍歷新版本數(shù)據(jù)庫腳本,對新版本的數(shù)據(jù)庫腳本與舊版本的數(shù)據(jù)庫表進行對比處理,獲取處理后的數(shù)據(jù),根據(jù)獲取的處理后的數(shù)據(jù)對舊版本的數(shù)據(jù)庫表進行修改,進行數(shù)據(jù)庫表的升級。
      [0011]具體來說,首先遍歷新版本的數(shù)據(jù)庫腳本和舊版本的數(shù)據(jù)庫,獲取新版本的數(shù)據(jù)庫腳本和舊版本數(shù)據(jù)庫的表數(shù)目和表名,對新版本的數(shù)據(jù)庫腳本和舊版本的數(shù)據(jù)庫的表名一一進行對比比較,判斷是否是相同的表名,一一進行判斷以后,篩選出新版本的數(shù)據(jù)庫腳本中與舊版本數(shù)據(jù)庫表相比新增加的表名,然后對新增加的表名在舊版本的數(shù)據(jù)庫表中建立新的庫表結(jié)構(gòu),其中相同表名稱比較字段個數(shù),對于不同字段名稱的進行增量添加,對于舊版有而新版沒有的字段則忽略。例如說,在舊版本的數(shù)據(jù)庫中存在10個表名,而新的數(shù)據(jù)庫腳本中存在13個表名,對他們--進行對比篩選,找出新版本的數(shù)據(jù)庫腳本中不存在于舊版本中的3個表名,然后在舊版本的數(shù)據(jù)庫中為這三個新增表新建表結(jié)構(gòu),即對舊版本的數(shù)據(jù)庫表進行更新。
      [0012]新增表增加完以后,對新版本的數(shù)據(jù)庫腳本中與舊版本數(shù)據(jù)庫中具有相同表名的表對象,對新版本的數(shù)據(jù)庫腳本與舊版本數(shù)據(jù)庫均、以一列為一個字段,依次判斷新版本的數(shù)據(jù)庫腳本與舊版本的數(shù)據(jù)庫表中每個表相對應的每個字段的字段類型是否一致,不一致則使用新版本的數(shù)據(jù)庫腳本的字段類型代替舊版本的數(shù)據(jù)庫表的字段類型,對舊版本的數(shù)據(jù)庫表進行升級,一致則不替換。
      [0013]在對數(shù)據(jù)庫中表的字段類型進行判斷時,還需要判斷新版本的數(shù)據(jù)庫腳本中與舊版本數(shù)據(jù)庫中相同名稱的表對應的相同的字段的長度是否有變動,如果有變動則使用新版本的數(shù)據(jù)庫腳本的字段數(shù)據(jù)代替舊版本的數(shù)據(jù)庫表的字段數(shù)據(jù),不具有變動則不改變。
      [0014]在進行表名判斷、字段類型判斷、字段長度判斷的過程中,同時根據(jù)新版數(shù)據(jù)庫腳本對舊版數(shù)據(jù)庫進行修改,完成自動升級。
      [0015]為了數(shù)據(jù)的安全和后續(xù)的查看,本發(fā)明在省級數(shù)據(jù)庫之前首先進行數(shù)據(jù)的備份,而在升級后,還可以進行數(shù)據(jù)的還原,數(shù)據(jù)庫備份和還原是基于Sqlserver企業(yè)管理器的備份和還原API實現(xiàn)的。具體如下:
      一,備份數(shù)據(jù)庫
      1).指定備份數(shù)據(jù)庫,內(nèi)部代碼里執(zhí)行sql命令BACKUP DATABASE DBName TO DISK =’C:\ DBName.bak' WITH FORMAT;默認完全備份,即完整數(shù)據(jù)庫備份,可以備份整個數(shù)據(jù)庫,包含用戶表、系統(tǒng)表、索引、視圖和存儲過程等所有數(shù)據(jù)庫對象。這是大多數(shù)人常用的方式,安全性好,但需要花費相對多的時間和空間。
      [0016]二,還原數(shù)據(jù)庫
      1).需要提供數(shù)據(jù)庫備份文件,DBName.bak文件;
      2).依據(jù)bak備份文件,代碼里執(zhí)行sql命令RESTORE DATABASE DBName FROM DISK=,C:\ DBName.bak’ WITH REPLACE, MOVE DBName TO ’C:\DBName.mdf’,MOVE DBName_log’ TO ’ C:\ DBName.ldf’
      例如:一返回由備份集內(nèi)包含的數(shù)據(jù)庫和日志文件列表組成的結(jié)果集返回由備份集內(nèi)包含的數(shù)據(jù)庫和日志文件列表組成的結(jié)果集
      RESTORE FILELISTONLY FROM DISK = ’c:\ DBName.bak’
      —還原由BACKUP備份的數(shù)據(jù)庫
      還原由 RESTORE DATABASE DBName FROM DISK =,c:\ DBName.bak’
      -指定還原后的數(shù)據(jù)庫物理文件名稱及路徑,這里得在SQL Server數(shù)據(jù)庫管理系統(tǒng)中,
      先指定還原后的數(shù)據(jù)庫物理文件名稱及路徑,數(shù)據(jù)庫管理系統(tǒng)中,指定還原后的數(shù)據(jù)庫物理文件名稱及路徑
      創(chuàng)建數(shù)據(jù)庫名為Test的數(shù)據(jù)庫,的數(shù)據(jù)庫,并且指定mdf文件和ldf文件在C盤test文件夾下.文件夾下.否則,在還原的時候,找不到指定的路徑.在還原的時候,找不到指定的路徑.RESTORE DATABASE Test FROM DISK = ’c:\ DBName.bak’ WITH MOVE ’DBName’TO ’c:\test\testdb.mdf’,MOVE ’ DBName _log’ TO ’c:\test\testdb.ldf’ MOVE,logical_file_name,TO ' operating_system_file_name'指定應將給定的logical_file_name 移到 operating_system_file_name.默認情況下,logical_file_name將還原到其原始位置.如果使用RESTORE語句將數(shù)據(jù)庫復制到相同或不同的服務器上,則可能需要使用MOVE選項重新定位數(shù)據(jù)庫文件以避免與現(xiàn)有文件沖突.可以在不同的MOVE語句中指定數(shù)據(jù)庫內(nèi)的每個邏輯文件.一強制還原,加上REPLACE參數(shù),則在現(xiàn)有數(shù)據(jù)庫基礎上強制還原.強制還原,參數(shù),則在現(xiàn)有數(shù)據(jù)庫基礎上強制還原.強制還原
      RESTORE DATABASE Test FROM DISK = ’c:\ DBName.bak’ WITH REPLACE, MOVE ’DBName ’ TO ’c:\test\testdb.mdf’,MOVE ’ DBName _log’ TO ’c:\test\testdb.ldf’。
      【主權(quán)項】
      1.基于SQLSever的數(shù)據(jù)庫結(jié)構(gòu)自動升級方法,其特征在于,包括: 使用SQLSever數(shù)據(jù)庫工具生成新版本的數(shù)據(jù)庫腳本; 遍歷舊版本庫表和新版本數(shù)據(jù)庫腳本,對新版本的數(shù)據(jù)庫腳本與舊版本的數(shù)據(jù)庫表進行對比處理,獲取處理后的數(shù)據(jù),根據(jù)處理后的數(shù)據(jù)對舊版本的數(shù)據(jù)庫表進行修改。2.根據(jù)權(quán)利要求1所述的基于SQLSever的數(shù)據(jù)庫結(jié)構(gòu)自動升級方法,其特征在于,所述對新版本的數(shù)據(jù)庫腳本與舊版本的數(shù)據(jù)庫表進行對比處理,獲取處理后的數(shù)據(jù),根據(jù)獲取的處理后的數(shù)據(jù)對舊版本的數(shù)據(jù)庫表進行修改,包括: 遍歷新版本的數(shù)據(jù)庫腳本的表名稱和舊數(shù)據(jù)庫表的表名稱,對它們一一進行對比比較,判斷是否是相同的名稱,篩選出新版本的數(shù)據(jù)庫腳本中與舊版本數(shù)據(jù)庫表相比新增加的表名稱,在舊版本的數(shù)據(jù)庫表中為新增加的表名稱建立新的庫表結(jié)構(gòu)。3.根據(jù)權(quán)利要求2所述的基于SQLSever的數(shù)據(jù)庫結(jié)構(gòu)自動升級方法,其特征在于:對具有相同表名稱的表對象,進一步依次判斷新版本的數(shù)據(jù)庫腳本與舊版本的數(shù)據(jù)庫表中每個表相對的每個字段的字段類型是否一致,不一致則使用新版本的數(shù)據(jù)庫腳本的字段類型代替舊版本的數(shù)據(jù)庫表的字段類型,對舊版本的數(shù)據(jù)庫表進行升級,一致則不替換。4.根據(jù)權(quán)利要求2所述的基于SQLSever的數(shù)據(jù)庫結(jié)構(gòu)自動升級方法,其特征在于:對具有相同表名稱的表對象,進一步判斷新版本的數(shù)據(jù)庫腳本對比舊版本的數(shù)據(jù)庫表每個表相對應的每個字段長度是否具有增量,如果具有增量則使用新版本的數(shù)據(jù)庫腳本的字段數(shù)據(jù)代替舊版本的數(shù)據(jù)庫表的字段數(shù)據(jù),對舊版本的數(shù)據(jù)庫表進行升級,不具有增量則不替換。
      【專利摘要】基于SQLSever的數(shù)據(jù)庫結(jié)構(gòu)自動升級方法,包括:使用SQLSever數(shù)據(jù)庫工具生成新版本的數(shù)據(jù)庫腳本;遍歷舊版本庫表和新版本數(shù)據(jù)庫腳本,對新版本的數(shù)據(jù)庫腳本與舊版本的數(shù)據(jù)庫表進行對比處理,獲取處理后的數(shù)據(jù),根據(jù)處理后的數(shù)據(jù)對舊版本的數(shù)據(jù)庫表進行修改。本發(fā)明可以自動進行數(shù)據(jù)庫升級問題,解決用戶不會操作sqlsever工具進行備份還原和升級的問題。
      【IPC分類】G06F17/30, G06F11/14
      【公開號】CN105373631
      【申請?zhí)枴緾N201510950276
      【發(fā)明人】張斌, 尚會領, 宋社平, 雷亞歌
      【申請人】河南思維自動化設備股份有限公司
      【公開日】2016年3月2日
      【申請日】2015年12月18日
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1