狠狠色丁香婷婷综合尤物/久久精品综合一区二区三区/中国有色金属学报/国产日韩欧美在线观看 - 国产一区二区三区四区五区tv

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發文檔 其他文檔  
 
網站管理員

如何讓SQL Server數據庫自動備份并壓縮

admin
2011年2月21日 23:32 本文熱度 7950
我們通常在維護數據庫的時候,都會建立一個備份的機制,在SQL Server中,我們就可以通過如下的方法來實現:

如果SQL Server代理沒有啟動,我們先把其啟動,然后新建立一個作業,名稱命名為“MyDb完全備份”,在分類下面選擇“數據庫維護”,然后新建立作業第一個步驟,步驟名為“對數據進行完全備份”,然后在命令框中輸入如下的SQL代碼:

DECLARE @strSql VARCHAR(1000), @strSqlCmd VARCHAR(1000), @timeDateDiff INT

SET @timeDateDiff = DATEDIFF(week,0,GETDATE())

SET @timeDateDiff = CASE DATEPART(WEEKDAY,GETDATE())

WHEN 1 THEN @timeDateDiff -1

ELSE @timeDateDiff END

SET @strSql='D:\DataBase\BackData\MyDb_' -- 備份目錄及備份的文件頭

+CONVERT(CHAR(8),DATEADD(week, @timeDateDiff,0),112) -- 完全備份日期

+'_0100' -- 完全備份時間

+'完全備份'

SET @strSqlCmd= @strSql+'.BAK' --備份文件的擴展名

BACKUP DATABASE [MyDb]TO DISK = @strSqlCmd WITH INIT, NOUNLOAD, NAME = N'MyDb 備份',NOSKIP, STATS = 10, NOFORMAT

操作如圖一:

圖一 建立作業對數據庫進行完全備份

然后開始執行對數據庫的壓縮,在步驟中再新建一個作業,步驟名為“壓縮數據庫”,然后在命令框中輸入如下的SQL代碼:

DECLARE @strSql VARCHAR(1000), @strSqlCmd VARCHAR(1000), @timeDateDiff INT, @strWeekDay VARCHAR(20)

SET @timeDateDiff=DATEDIFF(week,0,GETDATE())

SET @timeDateDiff=CASE DATEPART(WEEKDAY,GETDATE())

WHEN 1 THEN @timeDateDiff-1

ELSE @timeDateDiff END

SET @strSql='D:\DataBase\BackData\MyDb_' -- 備份目錄及備份的文件頭

+CONVERT(CHAR(8),DATEADD(week,@timeDateDiff,0),112) -- 完全備份日期

+'_0100' -- 完全備份時間

+'完全備份'

SET @strWeekDay= CASE DATEPART(WEEKDAY,GETDATE())

WHEN 1 THEN '星期天'

WHEN 2 THEN '星期一'

WHEN 3 THEN '星期二'

WHEN 4 THEN '星期三'

WHEN 5 THEN '星期四'

WHEN 6 THEN '星期五'

WHEN 7 THEN '星期六' END

SET @strSqlCmd='ECHO 壓縮開始日期: '+CONVERT(VARCHAR(20),GETDATE(),120)+' '+@strWeekDay+' >> D:\DataBase\BackData\CompressDataBase\MyDb_'+CONVERT(CHAR(6),DATEADD(week,@timeDateDiff,0),112)+'.txt'

exec master.dbo.XP_CMDSHELL @strSqlCmd,NO_OUTPUT

SET @strSqlCmd='RAR.EXE A -R '+@strSql+'.RAR '+@strSql+'.BAK >> D:\DataBase\BackData\CompressDataBase\MyDb__'+CONVERT(CHAR(6),DATEADD(week,@timeDateDiff,0),112)+'.txt'

PRINT LEN(@strSqlCmd)

PRINT (@strSqlCmd)

exec master.dbo.XP_CMDSHELL @strSqlCmd,NO_OUTPUT

SET @strSqlCmd='ECHO 壓縮日期: '+CONVERT(VARCHAR(20),GETDATE(),120)+' '+@strWeekDay+' >> D:\DataBase\BackData\CompressDataBase\MyDb_'+CONVERT(CHAR(6),DATEADD(week,@timeDateDiff,0),112)+'.txt'

exec master.dbo.XP_CMDSHELL @strSqlCmd,NO_OUTPUT


操作如圖二:

  圖二 建立作業對數據進行壓縮

完成后我們可以看到操作步驟的對話框,如圖三:

  圖三 數據完全備份的步驟

我們對照上圖,注意兩點,第一個是步驟1“成功時”這一列的顯示,當成功的時候轉到下一步,“失敗時”當失敗的時候失敗后退出,步驟2“成功時”當成功的時候成功后退出,“失敗時”當失敗時失敗后退出。確保兩個步驟對數據操作的正常。
再執行“調度”一欄,主要實現在什么時候執行這些作業,我們定在每周日一點的時候開始執行,如圖四:

  圖四 建立調度

這樣就可以建立好對數據庫的整個完全備份了。

有時我們數據在遭到破壞的時候,而在恢復到上次的整個備份時,就會產生很多丟失的數據了,這時我們就必須還得建立另外一種備份的機制—差異備份。

步驟還和上面一樣,我們建立一個作業,命名為“MyDb差異備份”,在步驟里面同樣是建立兩個步驟,分別是差異備份和差異壓縮,步驟一在命令框中輸入內容如下:

DECLARE @strSql VARCHAR(1000), @strSqlCmd VARCHAR(1000), @timeDateDiff INT

SET @timeDateDiff = DATEDIFF(week,0,GETDATE())

SET @timeDateDiff = CASE DATEPART(WEEKDAY,GETDATE())

WHEN 1 THEN @timeDateDiff -1

ELSE @timeDateDiff END

SET @strSql='D:\DataBase\BackData\MyDb_' -- 備份目錄及備份的文件頭

+CONVERT(CHAR(8),DATEADD(week, @timeDateDiff,0),112) -- 完全備份日期

+'_0100' -- 完全備份時間

+'差異備份'

+'_'+CONVERT(CHAR(8),GETDATE(),112) -- 差異備份日期

+'_0300' -- 差異備份時間

SET @strSqlCmd= @strSql+'.BAK' --備份文件的擴展名

BACKUP DATABASE [webEIMS2008] TO DISK = @cSqlCmd WITH INIT, NOUNLOAD, DIFFERENTIAL, NAME = N'MyDb差異備份', NOSKIP, STATS = 10, NOFORMAT

我們可以看到,差異備份除了文件名命名格式不一樣外,就在備份執行SQL語句時增加了了下DIFFERENTIAL參數,然后再執行。

步驟二在命令框中執行如下:

DECLARE @strSql VARCHAR(1000), @strSqlCmd VARCHAR(1000), @timeDateDiff INT, @strWeekDay VARCHAR(20)

SET @timeDateDiff=DATEDIFF(week,0,GETDATE())

SET @timeDateDiff=CASE DATEPART(WEEKDAY,GETDATE())

WHEN 1 THEN @timeDateDiff-1

ELSE @timeDateDiff END

SET @strSql='D:\DataBase\BackData\MyDb_' -- 備份目錄及備份的文件頭

+CONVERT(CHAR(8),DATEADD(week,@timeDateDiff,0),112) -- 完全備份日期

+'_0100' -- 完全備份時間

+'差異備份'

+'_'+CONVERT(CHAR(8),GETDATE(),112) -- 差異備份日期

+'_0300' -- 差異備份時間

SET @strWeekDay=CASE DATEPART(WEEKDAY,GETDATE())

WHEN 1 THEN '星期天'

WHEN 2 THEN '星期一'

WHEN 3 THEN '星期二'

WHEN 4 THEN '星期三'

WHEN 5 THEN '星期四'

WHEN 6 THEN '星期五'

WHEN 7 THEN '星期六' END

SET @strSqlCmd='ECHO 壓縮開始日期: '+CONVERT(VARCHAR(20),GETDATE(),120)+' '+@strWeekDay+' >> D:\DataBase\BackData\CompressDataBase\MyDb_'+CONVERT(CHAR(6),DATEADD(week,@timeDateDiff,0),112)+'.txt'

exec master.dbo.XP_CMDSHELL @strSqlCmd,NO_OUTPUT

SET @strSqlCmd='RAR.EXE A -R '+@strSql+'.RAR '+@strSql+'.BAK >> D:\DataBase\BackData\CompressDataBase\MyDb_'+CONVERT(CHAR(6),DATEADD(week,@timeDateDiff,0),112)+'.txt'

PRINT LEN(@strSqlCmd)

PRINT (@strSqlCmd)

exec master.dbo.XP_CMDSHELL @strSqlCmd,NO_OUTPUT

SET @strSqlCmd='ECHO 壓縮結束日期: '+CONVERT(VARCHAR(20),GETDATE(),120)+' '+@strWeekDay+' >> D:\DataBase\BackData\CompressDataBase\MyDb_'+CONVERT(CHAR(6),DATEADD(week,@timeDateDiff,0),112)+'.txt'

exec master.dbo.XP_CMDSHELL @strSqlCmd,NO_OUTPUT


  這時我們已經建立好了步驟,只是現在建立作業調度的時候有些變化,我們看圖五:

  圖五 建立差異備份作業調度

對比完全備份建立的作業調度,在這里我們可以看到,我們選擇的時間是除了周日以外的每天夜里3點的時候,自動執行此次調度。

當然時間是自己靈活分配的,如數據發生的變化比較大,我們可以選擇每天,然后頻率選擇發生周期性短一點,這樣我們數據在遭到破壞的時候,我們就可以及時的恢復了。

如果在SQL Server2000中,我們可以建立如上的作業就可以對數據進行備份了,而對于SQL Server2005,還有一點細微的變化,因為它默認是不支持xp_cmdshell執行命令的,SQL Server 已封鎖元件 'xp_cmdshell' 的 程序 'sys.xp_cmdshell' 之存取,因為此元件已經由此伺服器的安全性組態關閉。系統管理員可以使用sp_configure來啟用 'xp_cmdshell' 的使用。所以我們得恢復其執行命令,用下面命令就可以了解決了。

-- 開啟 xp_cmdshell

exec sp_configure 'show advanced options', 1;

RECONFIGURE;

exec sp_configure 'xp_cmdshell', 1;

RECONFIGURE;


-- 關閉 xp_cmdshell

exec sp_configure 'show advanced options', 1;

RECONFIGURE;


該文章在 2023/10/10 11:12:58 編輯過

全部評論1

admin
2014年9月7日 16:36

企業管理器里面的方法:

 1、打開企業管理器 

2、打開要處理的數據庫 

3、點擊最上面菜單>工具>SQL查詢分析器,打開SQL查詢分析器 

4、在輸入窗口里面輸入:

SQL Server 2005版:

DUMP TRANSACTION [clicksun] WITH NO_LOG;

BACKUP LOG [clicksun] WITH NO_LOG;

DBCC SHRINKDATABASE([clicksun]);

SQL Server 2008及之后版本:

alter DATABASE [clicksun] SET RECOVERY SIMPLE;
DBCC SHRINKFILE ('clicksun_log' , 0, truncateONLY);

DBCC SHRINKDATABASE([clicksun], 0);

注意上面的“clicksun_log”是數據庫操作日志文件,名稱并不一定是:數據庫名_log,點晴MIS系統的clicksun數據庫日志文件名為:oa_log,穩當起見,應該需要先臨時查出來:

select name from SYS.database_files where type_desc='LOG'


查看數據庫日志大小

  sqlServer 如何查看數據庫日志文件的大小

  查詢分析器執行命令: dbcc sqlperf(logspace)


該評論在 2023/10/10 10:15:31 編輯過
關鍵字查詢
相關文章
正在查詢...
點晴ERP是一款針對中小制造業的專業生產管理軟件系統,系統成熟度和易用性得到了國內大量中小企業的青睞。
點晴PMS碼頭管理系統主要針對港口碼頭集裝箱與散貨日常運作、調度、堆場、車隊、財務費用、相關報表等業務管理,結合碼頭的業務特點,圍繞調度、堆場作業而開發的。集技術的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業的高效ERP管理信息系統。
點晴WMS倉儲管理系統提供了貨物產品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質期管理,貨位管理,庫位管理,生產管理,WMS管理系統,標簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務都免費,不限功能、不限時間、不限用戶的免費OA協同辦公管理系統。
Copyright 2010-2025 ClickSun All Rights Reserved