程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> 其他數據庫知識 >> 更多數據庫知識 >> 自動定時備份sqlserver數據庫的方法

自動定時備份sqlserver數據庫的方法

編輯:更多數據庫知識

下面是我已經證實可用的自動備份的方法.
1、打開企業管理器->管理->sql server代理
2、新建一個作業,作業名稱隨便取,例如:data備份,所有者選擇sa,當然你也可以選擇其他用戶,前提是該用戶有執行作業的權限;
3、點擊步驟標簽,進入步驟面板.新建步驟,步驟名可以隨便填寫,如步驟1,類型和數據庫默認,不需要修改.命令中寫入以下語句:
BACKUP DATABASE [數據庫名] TO DISK = N'F:\\databack\\firenews備份' WITH NOINIT , NOUNLOAD , NAME = N'firenews備份', NOSKIP , STATS = 10, NOFORMAT
注意:需要修改的地方,數據庫名,DISK=(這裡需要填寫路徑和你的數據庫備份的名稱)後面的Name=可以隨便填寫.
4、點擊調度標簽,進入調度面板,新建調度,名稱隨便填寫,選擇反復出現,點更改可以選擇你想要執行任務的隨意調度.如每天,每2天,每星期,每月等.根據需要自己設置;(注意:在調度名稱後面有個啟動選項,必須勾選)
5、確定後,不要忘記一件事情,在你剛才建立的工作上點右鍵,啟動工作,如果你的工作沒有問題,將會提示執行成功,並有相對應的備份文件在你的磁盤上出現;
6、還有一個重要的問題就是你的sql server agent服務器已經啟動.
如果我們需要根據每天的日期來生成一個新的備份,以便我們區別備份文件.這時,我們需要修改一下剛才的sql語句.
參考實例:

1、自動備份,固定備份名,每次會追加備份
復制代碼 代碼如下:
backup database FireNews to disk=N'F:\\databack\\firenews備份' with noinit,nounload,name=N'firenews備份',noskip,stats=10,noformat
backup database fireweb to disk=N'F:\\backup\\data\\fireweb\\fireweb備份' with noinit,nounload,name=N'fireweb備份',noskip,stats=10,noformat

2、自動備份,以時間命名,完整備份
復制代碼 代碼如下:
declare @filename nvarchar(100) set @filename='F:\\databack\\data'+convert(char(8),getdate(),112)+'.bak' print @filename BACKUP DATABASE [firenews] TO DISK = @filename WITH NOINIT , NOUNLOAD , NAME = N'firenews備份', NOSKIP, STATS = 10, NOFORMAT
declare @filename nvarchar(100) set @filename='F:\\backup\\data\\fireweb\\fireweb'+convert(char(8),getdate(),112)+'.bak' print @filename BACKUP DATABASE [fireweb] TO DISK = @filename WITH NOINIT , NOUNLOAD , NAME = N'fireweb備份',NOSKIP, STATS = 10, NOFORMAT

注:
1、備份的數據庫存放的文件夾必須已經存在;
2、N 必須大寫;
3、NAME的值可以隨便寫;
4、FireNews,fireweb為數據庫名;
5、新建作業時提示:未能找到存儲過程master.dbo.xp_regread,表名master數據庫沒有這個存儲過程(可能是做安全處理的時候刪除了),需自己注冊。方法是:找到 數據庫——
master——擴展存儲過程,右鍵“新建擴展存儲過程”(名稱:xp_regread,路徑直接填:xpstar.dll)
以下為完整的備份數據庫的方法:
備份整個數據庫:
復制代碼 代碼如下:
BACKUP DATABASE { database_name | @database_name_var }
TO < backup_device > [ ,...n ]
[ WITH
[ BLOCKSIZE = { blocksize | @blocksize_variable } ]
[ [ , ] DESCRIPTION = { 'text' | @text_variable } ]
[ [ , ] DIFFERENTIAL ]
[ [ , ] EXPIREDATE = { date | @date_var }
| RETAINDAYS = { days | @days_var } ]
[ [ , ] PASSWORD = { password | @password_variable } ]
[ [ , ] FORMAT | NOFORMAT ]
[ [ , ] { INIT | NOINIT } ]
[ [ , ] MEDIADESCRIPTION = { 'text' | @text_variable } ]
[ [ , ] MEDIANAME = { media_name | @media_name_variable } ]
[ [ , ] MEDIAPASSWORD = { mediapassword | @mediapassword_variable } ]
[ [ , ] NAME = { backup_set_name | @backup_set_name_var } ]
[ [ , ] { NOSKIP | SKIP } ]
[ [ , ] { NOREWIND | REWIND } ]
[ [ , ] { NOUNLOAD | UNLOAD } ]
[ [ , ] RESTART ]
[ [ , ] STATS [ = percentage ] ]
]

參數
DATABASE
指定一個完整的數據庫備份。假如指定了一個文件和文件組的列表,那麼僅有這些被指定的文件和文件組被備份。


說明 在進行完整數據庫備份或差異數據庫備份時,Microsoft® SQL Server™ 備份足夠的事務日志,以生成一個將在還原數據庫時使用的一致的數據庫。在 master 數據庫上只能采用完整數據庫備份。

{ database_name | @database_name_var }
指定了一個數據庫,從該數據庫中對事務日志、部分數據庫或完整的數據庫進行備份。如果作為變量 (@database_name_var) 提供,則可將該名稱指定為字符串常量 (@database_name_var = database name) 或字符串數據類型(ntext 或 text 數據類型除外)的變量。
< backup_device >
指定備份操作時要使用的邏輯或物理備份設備。可以是下列一種或多種形式:
{ logical_backup_device_name } | { @logical_backup_device_name_var }
是由 sp_addumpdevice 創建的備份設備的邏輯名稱,數據庫將備份到該設備中,其名稱必須遵守標識符規則。如果將其作為變量 (@logical_backup_device_name_var) 提供,則可將該備份設備名稱指定為字符串常量 (@logical_backup_device_name_var = logical backup device name) 或字符串數據類型(ntext 或 text 數據類型除外)的變量。
{ DISK | TAPE } =
'physical_backup_device_name' | @physical_backup_device_name_var
允許在指定的磁盤或磁帶設備上創建備份。在執行 BACKUP 語句之前不必存在指定的物理設備。如果存在物理設備且 BACKUP 語句中沒有指定 INIT 選項,則備份將追加到該設備。
當指定 TO DISK 或 TO TAPE 時,請輸入完整路徑和文件名。例如,DISK = 'C:\Program Files\Microsoft SQL Server\MSSQL\BACKUP\Mybackup.dat' 或 TAPE = '\\.\TAPE0'。

說明 對於備份到磁盤的情況,如果輸入一個相對路徑名,備份文件將存儲到默認的備份目錄中。該目錄在安裝時被設置並且存儲在 KEY_LOCAL_MACHINE\Software\Microsoft\MSSQLServer\MSSQLServer 目錄下的 BackupDirectory 注冊表鍵值中。
如果使用的是具有統一命名規則 (UNC) 名稱的網絡服務器或已重新定向的驅動器號,則請指定磁盤的設備類型。
當指定多個文件時,可以混合邏輯文件名(或變量)和物理文件名(或變量)。但是,所有的設備都必須為同一類型(磁盤、磁帶或管道)。
Windows 98 不支持備份到磁盤。

是表示可以指定多個備份設備的占位符。備份設備數目的上限為 64。
BLOCKSIZE = { blocksize | @blocksize_variable }
用字節數來指定物理塊的大小。在 Windows NT 系統上,默認設置是設備的默認塊大小。一般情況下,當 SQL Server 選擇適合於設備的塊大小時不需要此參數。在基於 Windows 2000 的計算機上,默認設置是 65,536(64 KB,是 SQL Server 支持的最大大小)。
對於磁盤,BACKUP 自動決定磁盤設備合適的塊大小。


說明 如果要將結果備份集存儲到 CD-ROM 中然後從 CD-ROM 中恢復,請將 BLOCKSIZE 設為 2048。

磁帶的默認 BLOCKSIZE 為 65,536 (64 KB)。顯式聲明塊大小將替代 SQL Server 選擇的塊大小。
DESCRIPTION = { 'text' | @text_variable }
指定描述備份集的自由格式文本。該字符串最長可以有 255 個字符。
DIFFERENTIAL
指定數據庫備份或文件備份應該與上一次完整備份後改變的數據庫或文件部分保持一致。差異備份一般會比完整備份占用更少的空間。對於上一次完整備份時備份的全部單個日志,使用該選項可以不必再進行備份。有關更多信息,請參見差異數據庫備份和文件差異備份。


說明 在進行完整數據庫備份或差異備份時,SQL Server 備份足夠的事務日志,從而在恢復數據庫時生成一個一致的數據庫。

EXPIREDATE = { date | @date_var }
指定備份集到期和允許被重寫的日期。如果將該日期作為變量 (@date_var) 提供,則可以將該日期指定為字符串常量 (@date_var = date)、字符串數據類型變量(ntext 或 text 數據類型除外)、smalldatetime 或者 datetime 變量,並且該日期必須符合已配置的系統 datetime 格式。
RETAINDAYS = { days | @days_var }
指定必須經過多少天才可以重寫該備份媒體集。假如用變量 (@days_var) 指定,該變量必須為整型。


重要 假如 EXPIREDATE 或 RETAINDAYS 沒有指定,有效期將取決於 sp_configure 的 media retention 配置設置。這些選項僅僅阻止 SQL Server 重寫文件。用其它方法可擦除磁帶,而通過操作系統可以刪除磁盤文件。有關過期驗證的更多信息,請參見本主題的 SKIP 和 FORMAT。

PASSWORD = { password | @password_variable }
為備份集設置密碼。 PASSWORD 是一個字符串。如果為備份集定義了密碼,必須提供這個密碼才能對該備份集執行任何還原操作。


重要 備份集密碼防止未經授權即通過 SQL Server 2000 工具訪問備份集的內容,但是不能防止重寫備份集。

有關使用密碼的更多信息,請參見"權限"部分。
FORMAT
指定應將媒體頭寫入用於此備份操作的所有卷。任何現有的媒體頭都被重寫。FORMAT 選項使整個媒體內容無效,並且忽略任何現有的內容。


重要 使用 FORMAT 要謹慎。格式化一個備份設備或媒體將使整個媒體集不可用。例如,如果初始化現有條帶備份集中的單個磁帶,則整個備份集都將變得不可用。

通過指定 FORMAT,備份操作也就暗示了 SKIP 和 INIT;這些都不必顯式說明。
NOFORMAT
指定媒體頭不應寫入所有用於該備份操作的卷中,並且不要重寫該備份設備除非指定了 INIT。
INIT
指定應重寫所有備份集,但是保留媒體頭。如果指定了 INIT,將重寫那個設備上的所有現有的備份集數據。
當遇到以下幾種情況之一時不重寫備份媒體:
媒體上的備份設置沒有全部過期。有關更多信息,請參見 EXPIREDATE 和 RETAINDAYS 選項。

如果 BACKUP 語句給出了備份集名,該備份集名與備份媒體上的名稱不匹配。有關更多信息,請參見 NAME 子句。
使用 SKIP 選項替代這些檢查。有關使用 SKIP、NOSKIP、INIT 和 NOINIT 時的相互作用關系的更多信息,請參見注釋部分。


說明 如果備份媒體有密碼保護,SQL Server 將不寫入媒體,除非提供媒體密碼。SKIP 選項不替代此檢查。只有通過格式化才能重寫受密碼保護的媒體。有關更多信息,請參見 FORMAT 選項。

NOINIT
表示備份集將追加到指定的磁盤或磁帶設備上,以保留現有的備份集。NOINIT 是默認設置。
RESTORE 命令的 FILE 選項用於在還原時選擇適當的備份集。有關更多信息,請參見 RESTORE。
如果為媒體集定義了媒體密碼,則必須提供密碼。
MEDIADESCRIPTION = { text | @text_variable }
指明媒體集的自由格式文本描述,最多為 255 個字符。
MEDIADESCRIPTION = { text | @text_variable }
為整個備份媒體集指明媒體名,最多為 128 個字符。假如指定了 MEDIANAME,則它必須與以前指定的媒體名相匹配,該媒體名已存在於備份卷中。假如沒有指定 MEDIANAME,或指定了 SKIP 選項,將不會對媒體名進行驗證檢查。
MEDIAPASSWORD = { mediapassword | @mediapassword_variable }
為媒體集設置密碼。MEDIAPASSWORD 是一個字符串。
如果為媒體集定義了密碼,則在該媒體集上創建備份集時必須提供此密碼。另外,從該媒體集執行任何還原操作時也必須提供媒體密碼。只有通過格式化才能重寫受密碼保護的媒體。有關更多信息,請參見 FORMAT 選項。
有關使用密碼的更多信息,請參見"權限"部分。
NAME = { backup_set_name | @backup_set_var }
指定備份集的名稱。名稱最長可達 128 個字符。假如沒有指定 NAME,它將為空。
NORECOVERY
只與 BACKUP LOG 一起使用。備份日志尾部並使數據庫處於正在還原的狀態。當將故障轉移到輔助數據庫或在 RESTORE 操作前保存日志尾部時,NORECOVERY 很有用。
STANDBY = undo_file_name
只與 BACKUP LOG 一起使用。備份日志尾部並使數據庫處於只讀或備用模式。撤消文件名指定了容納回滾更改的存儲,如果隨後應用 RESTORE LOG 操作,則必須撤消這些回滾更改。
如果指定的撤消文件名不存在,SQL Server 將創建該文件。如果該文件已存在,則 SQL Server 將重寫它。有關更多信息,請參見使用備用服務器。
NOREWIND
指定 SQL Server 在備份操作完成後使磁帶保持打開。NOREWIND 意即 NOUNLOAD。SQL Server 將保留磁帶驅動器的所有權,直到 BACKUP或 RESTORE 命令使用 REWIND 為止。
如果無意中使磁帶處於打開狀態,則釋放磁帶的最快方法是使用下面的 RESTORE 命令:
RESTORE LABELONLY FROM TAPE = <name> WITH REWIND通過查詢 master 數據庫中的 sysopentapes 表可以查找正在打開的磁帶列表。
REWIND
指定 SQL Server 將釋放磁帶和倒帶。如果 NOREWIND 和 REWIND 均未指定,則默認設置為 REWIND。
NOSKIP
指示 BACKUP 語句在可以重寫媒體上的所有備份集之前先檢查它們的過期日期。
SKIP
禁用備份集過期和名稱檢查,這些檢查一般由 BACKUP 語句執行以防重寫備份集。有關更多信息,請參見注釋部分。
NOUNLOAD
指定不在備份後從磁帶驅動器中自動卸載磁帶。設置始終為 NOUNLOAD,直到指定 UNLOAD 為止。該選項只用於磁帶設備。
UNLOAD
指定在備份完成後自動倒帶並卸載磁帶。啟動新用戶會話時其默認設置為 UNLOAD。該設置一直保持到用戶指定了 NOUNLOAD 時為止。該選項只用於磁帶設備。
RESTART
指定 SQL Server 重新啟動一個被中斷的備份操作。因為 RESTART 選項在備份操作被中斷處重新啟動該操作,所以它節省了時間。若要重新啟動一個特定的備份操作,請重復整個 BACKUP 語句並且加入 RESTART 選項。不一定非要使用 RESTART 選項,但是它可以節省時間。


重要 該選項只用於導向磁帶媒體的備份和跨越了多個磁帶卷的備份。在備份的第一卷上永遠不會有重新啟動操作。

STATS [= percentage]
每當另一個 percentage 結束時顯示一條消息,它被用於測量進度。如果省略 percentage,SQL Server 將每完成 10 個百分點顯示一條消息。
<file_or_filegroup>
指定包含在數據庫備份中的文件或文件組的邏輯名。可以指定多個文件或文件組。
FILE = { logical_file_name | @logical_file_name_var }
給一個或多個包含在數據庫備份中的文件命名。
FILEGROUP = { logical_filegroup_name | @logical_filegroup_name_var }
給一個或多個包含在數據庫備份中的文件組命名。


說明 當數據庫的大小和性能要求使得進行完整數據庫備份不切實際時,備份一個文件。若要單獨備份事務日志,請使用 BACKUP LOG。



重要 必須通過使用 BACKUP LOG 提供事務日志的單獨備份,才能使用文件和文件組備份來恢復數據庫。有關文件備份的更多信息,請參見備份使用文件備份。

如果恢復模型為 SIMPLE,則不允許文件和文件組備份。

是一個占位符,表示可以指定多個文件和文件組。對文件或文件組的最大個數沒有限制。
LOG
指定只備份事務日志。該日志是從上一次成功執行了的 LOG 備份到當前日志的末尾。一旦備份日志,可能會截斷復制或活動事務不再需要的空間。


說明 假如備份日志看來並沒有截斷大部分的日志,則有可能在日志中存在一個舊的開放事務。可以使用 DBCC SQLPERF (LOGSPACE) 觀察日志空間。有關更多信息,請參見事務日志備份。

NO_LOG | TRUNCATE_ONLY
無須備份復制日志即刪除不活動的日志部分,並且截斷日志。該選項會釋放空間。因為並不保存日志備份,所以沒有必要指定備份設備。NO_LOG 和 TRUNCATE_ONLY 是同義的。
使用 NO_LOG 或 TRUNCATE_ONLY 備份日志後,記錄在日志中的更改不可恢復。為了恢復,請立即執行 BACKUP DATABASE。
NO_TRUNCATE
允許在數據庫損壞時備份日志。
注釋
可以將數據庫或日志備份追加到任何磁盤或磁帶設備上,從而使得數據庫和它的事務日志能存儲在一個物理位置中。
當數據庫正在使用時,SQL Server 使用一個聯機備份過程來對數據庫進行備份。下面的列表包括在數據庫或事務日志備份時無法進行的操作:
在備份操作時允許進行文件管理操作,如帶有 ADD FILE 或 REMOVE FILE 選項的 ALTER DATABASE 語句,以及 INSERT、UPDATE 或 DELETE 語句。

收縮數據庫或文件。這包括自動收縮操作。
假如在這些操作正在進行時啟動備份,備份將終止。假如正在進行備份時,試圖進行這些操作,則操作會失敗。
只要操作系統支持數據庫的排序規則,就可以在不同的平台之間執行備份操作,即使這些平台使用不同的處理器類型。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved