當前位置:首頁 » 編程語言 » sql常用的備份設備
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

sql常用的備份設備

發布時間: 2022-08-30 07:51:12

A. sql資料庫備份

SQL語句里有.
備份
backupdatabase[資料庫名]todisk=[磁碟路徑]
例如
backupdatabasedatatodisk='D:\1.bak'
恢復
restoredatabase[資料庫名]fromdisk=[磁碟路徑]
例如
restoredatabasedatafromdisk='D:\1.bak'
createPROCEDUREGY_DBBak
@bakequipint,--備份設備:磁碟&磁帶
@bakpathvarchar(50),--帶全路徑的備份文件名
@baktypeint,--完全備份&增量備份
@baklogint,--『0』備份日誌
@bakdbint,--『0』備份資料庫
@kindvarchar(7),--備份還是恢復
@retmsgvarchar(20)output--返回信息
AS
DECLARE@DevName_datavarchar(50)
DECLARE@DevName_logvarchar(50)
declare@db_pathvarchar(100)
declare@log_pathvarchar(100)
DECLARE@RCINT
SELECT@db_path=@bakpath+'.dat'
SELECT@log_path=@bakpath+'log.dat'
SELECT@RC=0
DBCCCHECKDB(Northwind)
/***********************************************************
**CREATEBACKUPANDRESTOREDEVICES
************************************************************/
IF@RC=0
BEGIN
EXECsp_admpdevice'disk',@DevName_data,@db_path
execsp_admpdevice'disk',@DevName_log,@log_path
select@rc=@@error
IF@RC<>0
begin
EXECSP_DropDevice@Devname_data
execsp_dropdevice@devname_log
SELECT@RC=-1000
return@rc
end
END
IF@kind='backup'
BEGIN
IF@bakequip=0
BEGIN
IF@baktype=0
BEGIN
IF@bakdb=0
BEGIN
BACKUPDATABASENorthwindTODISK=@Devname_data
WITHINIT
END
IF@baklog=0
BEGIN
BACKUPLOGNorthwindWITHNO_LOG
BACKUPLOGNorthwindTODISK=@DevName_log
WITHINIT,NO_TRUNCATE
END
END
ELSEBEGIN
IF@bakdb=0
BEGIN
BACKUPDATABASENorthwindTODISK=@DevName_data
WITHNOINIT
END
IF@baklog=0
BEGIN
BACKUPLOGNorthwindWITHNO_LOG
BACKUPLOGNorthwindTODISK=@DevName_log
WITHNOINIT,NO_TRUNCATE
END
END
END
SELECT@retmsg='資料庫備份成功!'
END
IF@kind='restore'
BEGIN
=@DevName_dataWITHREPLACE
SELECT@retmsg='恢復資料庫成功!'
END
RETURN0

B. sql sever2000怎麼備份資料庫

准備材料:電腦、sqlserver2000

1、單擊「開始」→「所有程序」→Microsoft SQL Server→「企業管理器」,打開「企業管理器」控制台窗口。

C. SQL 資料庫備份

SQL語句里有.

備份
backup database [資料庫名] to disk=[磁碟路徑]

例如
backup database data to disk='D:\1.bak'

恢復
restore database [資料庫名] from disk=[磁碟路徑]

例如
restore database data from disk='D:\1.bak'

create PROCEDURE GY_DBBak
@bakequip int, -- 備份設備:磁碟&磁帶
@bakpath varchar(50), -- 帶全路徑的備份文件名
@baktype int, -- 完全備份&增量備份
@baklog int, -- 『0』備份日誌
@bakdb int, -- 『0』備份資料庫
@kind varchar(7), --備份還是恢復

@retmsg varchar(20) output --返回信息
AS

DECLARE @DevName_data varchar(50)
DECLARE @DevName_log varchar(50)
declare @db_path varchar(100)
declare @log_path varchar(100)

DECLARE @RC INT

SELECT @db_path = @bakpath + '.dat'
SELECT @log_path = @bakpath + 'log.dat'
SELECT @RC=0

DBCC CHECKDB(Northwind)
/***********************************************************
** CREATE BACKUP AND RESTORE DEVICES
************************************************************/
IF @RC=0
BEGIN

EXEC sp_admpdevice 'disk', @DevName_data,@db_path

exec sp_admpdevice 'disk', @DevName_log,@log_path
select @rc=@@error
IF @RC<>0
begin
EXEC SP_DropDevice @Devname_data
exec sp_dropdevice @devname_log
SELECT @RC=-1000
return @rc
end
END

IF @kind='backup'
BEGIN
IF @bakequip=0
BEGIN
IF @baktype=0
BEGIN
IF @bakdb=0
BEGIN
BACKUP DATABASE Northwind TO DISK=@Devname_data
WITH INIT
END
IF @baklog=0
BEGIN
BACKUP LOG Northwind WITH NO_LOG
BACKUP LOG Northwind TO DISK=@DevName_log
WITH INIT,NO_TRUNCATE
END
END
ELSE BEGIN
IF @bakdb=0
BEGIN
BACKUP DATABASE Northwind TO DISK=@DevName_data
WITH NOINIT
END
IF @baklog=0
BEGIN
BACKUP LOG Northwind WITH NO_LOG
BACKUP LOG Northwind TO DISK=@DevName_log
WITH NOINIT,NO_TRUNCATE
END
END
END
SELECT @retmsg='資料庫備份成功!'
END

IF @kind='restore'
BEGIN
RESTORE DATABASE Northwind FROM DISK= @DevName_data WITH REPLACE
SELECT @retmsg='恢復資料庫成功!'
END

RETURN 0

D. SQL在磁碟上創建了一個備份設備

USE [master] 使用master庫
GO 執行
EXEC master.dbo.sp_admpdevice 執行master庫中的master.dbo.sp_admpdevice 過程
@devtype = N'disk', 參數一:設備類型:硬碟
@logicalname = N'test_backup', 參數二:設備名稱(邏輯名稱):test_backup
@physicalname = N'C:\Program Files\Microsoft SQL Server\MSSQL.1 \MSSQL\Backup\1.bak' 參數三:物理名稱(備份文件路徑)
GO 執行

E. SQL server 2008里的備份設備和備份是什麼意思和區別

追加是可以在一個備份文件中存放多個備份集,還原的時候可以選定需要還原的備份,這種方式由於存放了多個備份,文件大小會根據備份集的數量而增長。而覆蓋實際上是直接把備份文件覆蓋了,就相當於把備份文件先刪除,然後重新用那個名字存放備份。

F. 如何用SQL備份或還原資料庫並且會出現的常見問題以及解決方案

一、備份資料庫
1、打開SQL企業管理器,在控制台根目錄中依次點開Microsoft SQL Server
2、SQL Server組-->雙擊打開你的伺服器-->雙擊打開資料庫目錄
3、選擇你的資料庫名稱(如論壇資料庫Forum)-->然後點上面菜單中的工具-->選擇備份資料庫
4、備份選項選擇完全備份,目的中的備份到如果原來有路徑和名稱則選中名稱點刪除,然後點添加,如果原來沒有路徑和名稱則直接選擇添加,接著指定路徑和文件名,指定後點確定返回備份窗口,接著點確定進行備份
二、還原資料庫
1、打開SQL企業管理器,在控制台根目錄中依次點開Microsoft SQL Server
2、SQL Server組-->雙擊打開你的伺服器-->點圖標欄的新建資料庫圖標,新建資料庫的名字自行取
3、點擊新建好的資料庫名稱-->然後點上面菜單中的工具-->選擇恢復資料庫
4、在彈出來的窗口中的還原選項中選擇從設備-->點選擇設備-->點添加-->然後選擇你的備份文件名-->添加後點確定返回,這時候設備欄應該出現您剛才選擇的資料庫備份文件名,備份號默認為1(如果您對同一個文件做過多次備份,可以點擊備份號旁邊的查看內容,在復選框中選擇最新的一次備份後點確定)-->然後點擊上方常規旁邊的選項按鈕
5、在出現的窗口中選擇在現有資料庫上強制還原,以及在恢復完成狀態中選擇使資料庫可以繼續運行但無法還原其它事務日誌的選項。在窗口的中間部位的將資料庫文件還原為這里要按照你SQL的安裝進行設置(也可以指定自己的目錄),邏輯文件名不需要改動,移至物理文件名要根據你所恢復的機器情況做改動,如您的SQL資料庫裝在D:\Program Files\Microsoft SQL Server\MSSQL\Data,那麼就按照您恢復機器的目錄進行相關改動改動,並且最後的文件名最好改成您當前的資料庫名(如原來是zw0001.mdf,現在的資料庫是zw0002,就改成zw0002.mdf),日誌和數據文件都要按照這樣的方式做相關的改動(日誌的文件名是.ldf結尾的),這里的恢復目錄您可以自由設置,前提是該目錄必須存在(如您可以指定d:\sqldata\zw0002.mdf或者d:\sqldata\zw0002.ldf),否則恢復將報錯
6、修改完成後,點擊下面的確定進行恢復,這時會出現一個進度條,提示恢復的進度,恢復完成後系統會自動提示成功,如中間提示報錯,請記錄下相關的錯誤內容並詢問對SQL操作比較熟悉的人員,一般的錯誤無非是目錄錯誤或者文件名重復或者文件名錯誤或者空間不夠或者資料庫正在使用中的錯誤,資料庫正在使用的錯誤您可以嘗試關閉所有關於SQL窗口然後重新打開進行恢復操作,如果還提示正在使用的錯誤可以將SQL服務停止然後重起看看,至於上述其它的錯誤一般都能按照錯誤內容做相應改動後即可恢復

G. 什麼是SQL Server的備份設備

肯定沒設置好啦 不然怎麼可能不執行自動備份

企業管理器中的Tools,Database Maintenance Planner,可以設置資料庫的定期自動備份計劃。並通過啟動Sql server Agent來自動運行備份計劃。具體步驟如下:
1、打開企業管理器,在控制台根目錄中依次點開Microsoft SQL Server-->SQL Server組-->雙擊打開你的伺服器
2、然後點上面菜單中的工具-->選擇資料庫維護計劃器
3、下一步選擇要進行自動備份的數據-->下一步更新數據優化信息,這里一般不用做選擇-->下一步檢查數據完整性,也一般不選擇
4、下一步指定資料庫維護計劃,默認的是1周備份一次,點擊更改選擇每天備份後點確定
5、下一步指定備份的磁碟目錄,選擇指定目錄,如您可以在D盤新建一個目錄如:d:\databak,然後在這里選擇使用此目錄,如果您的資料庫比較多最好選擇為每個資料庫建立子目錄,然後選擇刪除早於多少天前的備份,一般設定4-7天,這看您的具體備份要求,備份文件擴展名默認的是BAK
6、下一步指定事務日誌備份計劃,看您的需要做選擇-->下一步要生成的報表,一般不做選擇-->下一步維護計劃歷史記錄,最好用默認的選項-->下一步完成
7、完成後系統很可能會提示Sql Server Agent服務未啟動,先點確定完成計劃設定,然後找到桌面最右邊狀態欄中的SQL綠色圖標,雙擊點開,在服務中選擇Sql Server Agent,然後點擊運行箭頭,選上下方的當啟動OS時自動啟動服務
8、可以設置啟動啟動sql server Agent:運行Services.msc,設置sqlserverAgent為自動啟動。 修改計劃:打開企業管理器,在控制台根目錄中依次點開Microsoft SQL Server-->SQL Server組-->雙擊打開你的伺服器-->管理-->資料庫維護計劃

H. SQL Server 資料庫熱備份怎麼做

1、在要備份的資料庫上滑鼠右鍵單擊,選擇備份,見下圖:

I. 怎樣還備份和還原SQL資料庫

首先,請問你使用的是什麼資料庫?(Oracle,SQL,MySQL,PostgreSQL or other DB),因為不同的DB備份的方式種類及命令可能有些不同。
基本來說大體可以分為2類:在線備份和離線備份:
離線備份:
1.可以直接 datafile and related files to your disk。
2.通過資料庫帶的備份工具或命令進行備份。
在線備份:
1.執行備份命令。
2.通過資料庫帶的備份工具進行備份。
像oracle還有一套資料庫管理系統,可以通過網頁瀏覽,然後進行對db的配置以及備份和恢復。

恢復:通過日誌進行恢復!

1、備份位置

在SQL Server上,有多種備份位置可以選擇,如本地磁碟,網路磁碟,遠程地址,磁帶等。

各種備份位置均有自己的優點和缺點。

2、邏輯備份設備

在SQL Server上,可以通過創建邏輯備份設備來完成備份。使用邏輯備份設備的好處是,當變更備份地址時,不需要更改備份腳本,只需要更改邏輯備份設備的定義即可。

創建邏輯備份設備的腳本如下:
SQL code
EXEC sp_addmpdevice @devtype=』disk』,@logicalname=』MYBackup』,@physicalname=』D:\backup\mydb.bak』

刪除備份設備的腳本:
SQL code
Sp_dropdevice @logicalname=』MYBackup』

上述腳本只是刪除邏輯備份設備的定義,下述腳本將同時刪除備份文件:
SQL code
Sp_dropdevice @logicalname=』MYBackup』,@devfile=』DELFILE』

使用邏輯備份設備的方法如下:
SQL code
Backup database mydb to MYBackup

當然,還可在邏輯備份設備上指定過期時間等備份屬性,如:

SQL code
Backup database mydb to MYBackup WITH EXPIREDATE=』13/01/2010』
或:
SQL code
BACKUP DATABASE mydb to MYBackup WITH RETAINDAYS=7

3、備份集與存儲

每一份備份包含於一個備份集,而一個備份集包含於一個存儲集。通過系統GUI進行備份時,SQL Server會自動指定備份集和存儲集,目的則是為了簡化管理。用T-SQL顯示指定則用如下語法:
SQL code
BACKUP DATABASE mydb to MYBackup WITH RETAINDAYS=7,

NAME=』FULL』,

MEDIANAME=』ALLBackups』

NAMEs是指備份集名稱,MEDIANAME是指存儲集名稱。

4、全備份
不管恢復模式是哪一個,所有的備份都必須要有一個全備份,特別是日誌備份和差異備份,如果沒有全備份的話,將無法進行恢復。

簡單的全備份腳本如下所示,也可以通過維護計劃來指定全備份:
SQL code
BACKUP DATABASE mydb to DISK=』D:\Backup\mydb.bak』

但需要注意的是,上述命令是將資料庫備份附加到當前的存在的文件上,如果不存在則創建它,並不會覆蓋原有文件。要覆蓋同名的備份文件,需要指定INIT參數。

SQL code
BACKUP DATABASE mydb to DISK=』D:\Backup\mydb.bak』 WITH INIT

5、日誌備份

在完全恢復模式或者大容量日誌恢復模式下,日誌備份不僅僅是恢復的需要,同時也是手工管理事務日誌文件的一種方式。如果從不進行備份的話,在完全恢復模式或者大容量恢復模式下,事務日誌將會持續增長,直至消耗完所在磁碟。

日誌備份的腳本如下:
SQL code
BACKUP LOG mydb_log TO DISK=』D:\backup\mydb.trn』

需要養成使用.trn為日誌備份的擴展名的習慣。

每個在資料庫上的動作都會被安排一個Log Sequence Number (LSN)。如果需要還原到指定的時間點,需要有持續的LSN記錄。也就是說,在完全恢復模式或者大容量日誌模式下,一個不被打斷的事務日誌備份鏈是恢復資料庫的基本要求。

6、差異備份
使用日誌備份來恢復時,無疑是一個很慢的過程,特別是上一個全備份的歷史比較悠久時。使用差異備份,便能縮短恢復時間。事實上,差異備份只是BACKUP DATABASE的一個選項,如下:

SQL code
BACKUP DATABASE mydb TO DISK=』D:\backup\mydb.dif』 WITH DIFFERENTIAL,INIT

進行資料庫恢復時,先恢復資料庫全備份,再恢復資料庫差異備份,最後才恢復日誌備份。

差 異備份是與上一次全備份緊密相連的,不管期間有多少次日誌備份和差異備份,差異備份還是會從上一次全備開始備份。因此,經常會遇到這樣的一種情況,在生產 庫上需要臨時使用資料庫時,便用BACKUP DATABASE … TO DISK=』..』進行了一個備份,下一次的差異備份便會以這回的全備為准,如果過後把這個臨時全備刪除掉後,後面的差異備份就沒用了。

差異備份並不意味著磁碟空間肯定會少,這取決於實際情況。當期間大量操作發生時,差異備份還是會變得很大。
7、錯誤檢測

在備份過程中,備份進程會同時驗證數據,或者校驗不完整頁(torn page),或者驗證校驗和(checksum)。要使用該功能,需要激活該選項。

不完整頁檢測(Torn-page dection)僅僅檢查每一個頁看是否已經寫完成。如果發現一個頁只有部分被寫入,那麼就將其標記為torn。

校驗和驗證(checksum validation)是一種新的頁驗證機制。它會為每個頁添加一個值來表明該頁實際的大小。雖然看起來是個代價很高影響性能的操作,但事實上,它的效率非常高,與torn-page差不多。

備份進程在備份資料庫時,會通過比較在資料庫里的和隨著備份頁寫入硬碟時這兩個之間的值來進行驗證。但是,這個驗證並不是自動完成的,需要顯示指定,在GUI頁面上是個選項。如果通過T-SQL來備份的話,語句如下:
SQL code
BACKUP DATABASE mydb TO DISK=』D:\data\mydb.bak』 WITH CHECKSUM

如果備份過程中,發現了錯誤,SQL Server會錯誤信息寫入MSDB上的SUSPECT_PAGE表裡面。同時,在默認情況下,備份行為會停止的(STOP_ON_ERROR),以便管理員排查錯誤。

但 備份過程中的校驗和驗證還有另外一個選項(CONTINUE_ON_ERROR),也就是說,如果發現錯誤,備份過程並不會中斷,而是將錯誤頁信息記錄在 MSDB..SUSPECT_PAGE上而已。需要注意的是,SUSPECT_PAGE表是有行限制的,最多隻能達到1000行,如果達到了的話,備份同 樣會失敗。

激活校驗和驗證的話,很明顯會影響備份的性能。但還是很有必要的。

8、安全備份

完全備份和日誌備份語句還支持使用密碼屬性,如:

SQL code
BACKUP DATABASE mydb TO DISK=』D:\mydb.bak』 WITH PASSWORD=』mydb』

所指定的密碼是很容易破解的。因此,如果確實需要對某些備份數據進行加密的話,可以將備份存放於加密的文件系統或者其它安全的存儲設備上。

同時,SQL Server還提供了對真實列進行加密的功能。該加密功能是工業標准。

9、條帶備份

有些情況下,單獨一個硬碟無法存儲一個完整的資料庫備份時,可以將資料庫備份分成多個部分存儲在不同的磁碟上,這種備份方式成為條帶備份。使用條帶備份的優點很明確,就是能很好的利用空間,但如果某部分備份丟失或者損壞,那整個備份將無效。

其語句如下:
SQL code
BACKUP DATABASE mydb TO DISK=』D:\mydb.bak』,

DISK=』E:\mydb.bak』 WITH INIT,CHECKSUM,

CONTINUE_ON_ERROR

上述D盤和E盤上的備份是不可分割的。

10、鏡像備份
與條帶備份在多個磁碟上保留同一份備份不同的是,鏡像備份是在不同磁碟上保留多份備份。其語句如下:
SQL code
BACKUP DATABASE mydb TO DISK=』D:\mydb.bak』

MIRROR TO DISK=』E:\mydb.bak』

WITH INIT,CHECKSUM,CONTINUE_ON_ERROR

在實際情況下,對日誌備份採取鏡像備份方式會比較合適。

11、COPY-ONLY 備份
在差異備份里曾提到過,差異備份是建立在上一個全備份的基礎上的。因此如果在一個事先安排好的備份計劃里,如果在全備份和差異備份之間再進行了一次全備份後,其差異備份會被打斷,如果把臨時全備份刪除掉後,就產生了數據丟失。

在SQL SERVER 2005以後,SQL SERVER提供了一個選項-only.使用-only選項進行的全備份便不會打算原先的備份計劃,語句如下:
SQL code
BACKUP DATABASE mydb TO DISK=』D:\mydb.bak』

WITH INIT,CHECKSUM,COPY_ONLY

三、文件和文件組備份

在SQL SERVER 7.0以後,SQL Server提供了filegroup的概念。文件組不僅僅提供了一個邏輯的存儲地址,還允許將不同的表和索引放在不同的文件組上來提高性能和減少備份時間。

在數據存儲概述上,提到了資料庫有三類數據文件,一般來說,資料庫至少需要兩個(.mdf和.ldf)或者更多的文件。SQL Server不僅允許有多個文件存在(.ldf),還允許多個文件組存在。

一個文件組可以有多個文件,每個文件需要仔細規劃好初始大小及增量。

1、默認文件組

在創建對象時,如果未明確指定文件組,那麼該對象將會存放在默認的文件組上。在默認情況下,默認的文件組是primary,但由於primary文件組不僅可以包含用戶數據,同時還存儲著資料庫結構等技術信息,因此一般建議添加額外的一個文件組,並將其指定為默認文件組。

SQL Server只能有一個默認的文件組。

修改默認文件組的語句如下:
SQL code
ALTER DATABASE mydb MODIFY FILEGROUP mydb DEFAULT;

2、為對象指定文件組
當創建表或者索引時,不管是用戶還是系統都需要將表或索引放在某個文件組上。如果在創建表或索引時指定文件組,那麼表或索引將會存儲在指定的文件組上,而不是默認的文件組。

其指定語句如下:
SQL code
CREATE TABLE test( [id] int,[notes] text) on mydbdata

也可以通過GUI創建表的頁面來指定文件組。

3、將對象遷移至指定文件組
如果需要變更對象的存儲位置,最簡單的方式則是通過GUI屬性頁面來進行修改通過該方法,可以直觀的看到對象的遷移過程。

同時也可以通過T-SQL來修改,例如:
SQL code
ALTER TABLE test drop constraint PK_test WITH (MOVE TO DATA)

4、備份數據文件
備份數據文件同樣可以通過BACKUP DATABASE語句來實現。如下:
SQL code
BACKUP DATABASE mydb FILE=』D:\Data\mydb.ndf』 TO DISK=』E:\Backup\mydbdata.bak』

上述語句相當於數據文件級別的全備份,與資料庫級別的備份類似,文件級別上的備份也有差異備份,當然前提是要有相對應的文件全備份。

差異備份的語句如下:
SQL code
BACKUP DATABASE mydb FILE=』D:\Data\mydb.ndf』

WITH DIFFERENTIAL

TO DISK=』E:\Backup\mydbdata_dif.bak』

5、備份文件組
與單獨備份文件類似,也可以對文件組進行類似的備份操作。備份文件組的方式也有兩種,一種是通過GUI界面指定,一種則是通過T-SQL。

T-SQL的語句如下:
SQL code
BACKUP DATABASE mydb FILEGROUP=』PRIMARY』 TO DISK=』E:\Backup\mydbpri.bak』

6、不完全備份(partial backup)
在文件組備份上,不完全備份其實相當於完全備份,可以通過指定關鍵字READ_WRITE_FILEGROUPS來實現不完全備份。

語句如下:
SQL code
BACKUP DATABASE mydb READ_WRITE_FILEGROUPS TO DISK=』D:\mydb.bak』