做自己

          第二站
          posts - 22, comments - 4, trackbacks - 0, articles - 0
          很早以前的一個項目里寫的,現在放上來備忘。

          要求:
          具有管理員權限,一般sa用戶就可以。

          備份原理如下:
          首先導出數據庫到本地硬盤上,然后壓縮成cab文件,之后用ftp.exe將壓縮包上傳到ftp服務器上
          恢復原理如下:
          首先在ftp服務器上下載壓縮包,然后解壓縮里面的文件,最后將數據庫備份恢復。

          這是備份的源碼
          ?1?create?procedure?sp_BackupDB
          ?2???????@DBName?varchar(50),
          ?3???????@Host?varchar(255),
          ?4???????@User?varchar(255),
          ?5???????@Password?varchar(255),
          ?6?--??????@Port?int,
          ?7???????@WorkingFolder?varchar(255),
          ?8???????@FileName?varchar(255)
          ?9?as
          10?begin
          11???declare?@sTempFileName?varchar(255)
          12???declare?@sCommandText?varchar(255)
          13???declare?@sCabFileName?varchar(255)
          14???declare?@sTempFolder?varchar(255)
          15?
          16???set?@sTempFolder?=?'~dbback'
          17???--創建臨時文件夾
          18???set?@sCommandText?=?'md?c:'?+?@sTempFolder
          19???exec?xp_cmdshell?@sCommandText
          20?
          21???set?@sCabFileName?=?'c:'?+?@sTempFolder?+?''?+?@FileName
          22???set?@sTempFileName?=?REPLACE(@sCabFileName,'.zpck','.dbak')
          23?
          24???--刪除可能存在的的臨時文件
          25???set?@sCommandText?=?'del?"'?+?@sTempFileName?+'"'
          26???exec?xp_cmdshell?@sCommandText
          27?
          28???set?@sCommandText?=?'del?"'?+?@sCabFileName?+'"'
          29???exec?xp_cmdshell?@sCommandText
          30?
          31???--備份數據庫
          32???BACKUP?DATABASE?@DBName??TO?DISK?=?@sTempFileName
          33???--set?@sCommandText?=?'BACKUP?DATABASE?'?+?@DBName?+?'?TO?DISK?=?'''?+?@sTempFileName?+?''''
          34???--execute(@sCommandText)
          35???
          36???--將數據庫壓縮成數據包
          37???exec?xp_makecab?@sCabFileName,?'mszip',?1?,?@sTempFileName
          38???
          39???declare?@ftpLogScriptFileName?varchar(255)
          40???set?@ftpLogScriptFileName?=?'"'?+?REPLACE(@sCabFileName,'.zpck','.log')?+?'"'
          41???--產生ftp上傳腳本
          42???set?@sCommandText?=?'echo?ftp>'?+?@ftpLogScriptFileName
          43???exec?xp_cmdshell?@sCommandText
          44???set?@sCommandText?=?'echo?open?'?+?@Host?+?'>>'?+?@ftpLogScriptFileName
          45???exec?xp_cmdshell?@sCommandText
          46???set?@sCommandText?=?'echo?'?+?@User?+?'>>'?+?@ftpLogScriptFileName
          47???exec?xp_cmdshell?@sCommandText
          48???set?@sCommandText?=?'echo?'?+?@Password?+?'>>'?+?@ftpLogScriptFileName
          49???exec?xp_cmdshell?@sCommandText
          50???set?@sCommandText?=?'echo?cd?'?+?@WorkingFolder?+?'>>'?+?@ftpLogScriptFileName
          51???exec?xp_cmdshell?@sCommandText
          52???set?@sCommandText?=?'echo?put?"'?+?@sCabFileName?+?'">>'?+?@ftpLogScriptFileName
          53???exec?xp_cmdshell?@sCommandText
          54???set?@sCommandText?=?'echo?bye?>>'?+?@ftpLogScriptFileName
          55???exec?xp_cmdshell?@sCommandText
          56?
          57???--上傳數據包
          58???set?@sCommandText?=?'ftp?-s:"'?+?@ftpLogScriptFileName?+?'"'
          59???exec?xp_cmdshell?@sCommandText
          60?
          61???--刪除數據庫壓縮包
          62???set?@sCommandText?=?'del?"'?+?@sCabFileName?+?'"'
          63???exec?xp_cmdshell?@sCommandText
          64?
          65???--刪除ftp上傳腳本
          66???set?@sCommandText?=?'del?"'?+?@ftpLogScriptFileName?+?'"'
          67???exec?xp_cmdshell?@sCommandText
          68?
          69??
          70???--刪除數據庫備份
          71???set?@sCommandText?=?'del?"'?+?@sTempFileName?+?'"'
          72???exec?xp_cmdshell?@sCommandText
          73?
          74???--刪除臨時文件夾
          75???set?@sCommandText?=?'rd?c:'?+?@sTempFolder
          76???exec?xp_cmdshell?@sCommandText
          77?
          78???return
          79?end

          這是恢復備份的源碼
          create??procedure?sp_RestoreDB
          ??????
          @DBName?varchar(50),
          ??????
          @Host?varchar(255),
          ??????
          @User?varchar(255),
          ??????
          @Password?varchar(255),
          ??????
          @WorkingFolder?varchar(255),
          ??????
          @FileName?varchar(255),
          ??????
          @MDFPhyFileName?varchar(255),
          ??????
          @MDFLogFileName?varchar(255),
          ??????
          @LDFPhyFileName?varchar(255),
          ??????
          @LDFLogFileName?varchar(255),
          ??????
          @ReturnValue?int?output
          as
          begin
          ??
          set?@ReturnValue?=?-1
          ??
          declare?@sTempFileName?varchar(255)
          ??
          declare?@sCommandText?varchar(255)
          ??
          declare?@sCabFileName?varchar(255)
          ??
          declare?@sUnpackFolder?varchar(255)
          ??
          declare?@sTempFolder?varchar(255)

          --??set?@MDFPhyFileName?=?'C:Program?FilesMicrosoft?SQL?ServerMSSQLDataSuStorageMgr.mdf'
          --
          ??set?@MDFLogFileName?=?'SuStorageMgr_Data'
          --
          ??set?@LDFPhyFileName?=?'C:Program?FilesMicrosoft?SQL?ServerMSSQLDataSuStorageMgr_log.ldf'
          --
          ??set?@LDFLogFileName?=?'SuStorageMgr_Log'

          ??
          set?@sTempFolder?=?'~dbback'
          ??
          set?@sCabFileName?=?'c:'?+?@sTempFolder?+?''?+?@FileName
          ??
          set?@sTempFileName?=?REPLACE(@sCabFileName,'.zpck','.dbak')

          ??
          set?@sCommandText?=?'md?'?+?'c:'?+?@sTempFolder
          ??
          exec?xp_cmdshell?@sCommandText

          ??
          --刪除可能存在的的臨時文件
          ??set?@sCommandText?=?'del?"'?+?@sTempFileName?+?'"'
          ??
          exec?xp_cmdshell?@sCommandText

          ??
          declare?@ftpLogScriptFileName?varchar(255)
          ??
          set?@ftpLogScriptFileName?=?REPLACE(@sCabFileName,'.zpck','.log')

          ??
          --產生ftp下載腳本
          ??set?@sCommandText?=?'echo?ftp>"'?+?@ftpLogScriptFileName?+?'"'
          ??
          exec?xp_cmdshell?@sCommandText
          ??
          set?@sCommandText?=?'echo?open?'?+?@Host?+?' >>"'?+?@ftpLogScriptFileName?+?'"'
          ??
          exec?xp_cmdshell?@sCommandText
          ??
          set?@sCommandText?=?'echo?'?+?@User?+?'>>"'?+?@ftpLogScriptFileName?+?'"'
          ??
          exec?xp_cmdshell?@sCommandText
          ??
          set?@sCommandText?=?'echo?'?+?@Password?+?'>>"'?+?@ftpLogScriptFileName?+?'"'
          ??
          exec?xp_cmdshell?@sCommandText
          ??
          set?@sCommandText?=?'echo?cd?'?+?@WorkingFolder?+?'>>"'?<;/span>+?@ftpLogScriptFileName?+?'"'
          ??
          exec?xp_cmdshell?@sCommandText
          ??
          set?@sCommandText?=?'echo?get?'?+?@FileName?+?'?'?+?@sCabFileName?+?'>>"'?+?@ftpLogScriptFileName?+?'"'
          ??
          exec?xp_cmdshell?@sCommandText
          ??
          set?@sCommandText?=?'echo?bye >>"'?+?@ftpLogScriptFileName?+?'"'
          ??
          exec?xp_cmdshell?@sCommandText

          ??
          --下載數據包
          ??set?@sCommandText?=?'ftp?-s:'?+?@ftpLogScriptFileName
          ??
          exec?xp_cmdshell?@sCommandText

          ??
          --刪除ftp下載腳本
          ??set?@sCommandText?=?'del?"'?+?@ftpLogScriptFileName?+?'"'
          ??
          exec?xp_cmdshell?@sCommandText

          ??
          --壓縮包解壓縮
          ??set?@sUnpackFolder?=?'c:'?+?@sTempFolder
          ??
          exec?xp_unpackcab?@sCabFileName,?@sUnpackFolder,?1

          ??
          --刪除數據庫壓縮包
          ??set?@sCommandText?=?'del?"'?+?@sCabFileName?+?'"'
          ??
          exec?xp_cmdshell?@sCommandText

          ??
          --還原數據庫
          ??RESTORE?DATABASE??@DBName
          ???
          FROM?disk?=?@sTempFileName
          ???????
          WITH?RECOVERY,
          ???????
          REPLACE,
          ????MOVE?
          @MDFLogFileName?to?@MDFPhyFileName,
          ????MOVE?
          @LDFLogFileName?to?@LDFPhyFileName

          ??
          --刪除數據庫備份
          ??set?@sCommandText?=?'del?"'?+?@sTempFileName?+?'"'
          ??
          exec?xp_cmdshell?@sCommandText

          ??
          --刪除臨時目錄
          ??set?@sCommandText?=?'rd?'?+?'c:'?+?@sTempFolder
          ??
          exec?xp_cmdshell?@sCommandText
          ??
          set?@ReturnValue?=?1
          ??
          return
          end

          在windows 2000+sql server 2000上調試通過

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 呼图壁县| 凉山| 庄浪县| 阿鲁科尔沁旗| 平和县| 饶阳县| 区。| 东宁县| 固始县| 延津县| 道真| 涞源县| 诸城市| 繁昌县| 汾阳市| 吕梁市| 原平市| 寻甸| 清远市| 周口市| 巨野县| 抚顺市| 桃园市| 宜章县| 寿光市| 张北县| 盐边县| 荆门市| 彩票| 长垣县| 杂多县| 绥化市| 北海市| 都兰县| 社旗县| 高要市| 宜章县| 蓬安县| 五家渠市| 齐河县| 武冈市|